我将支持rest控制器的本地化。这将得到政府的支持 Accept-Language
请求标头。
我跟随这篇文章来配置消息源,它工作正常。
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(new Locale("pt", "BR"));
return resolver;
}
但是,当我使用 SimpleDateFormat
要将localdate转换为字符串,它不考虑在标头上接收到的区域设置。
GregorianCalendar gregorianCalendar = new GregorianCalendar(
2018, 1, 1, 10, 15, 20);
Date date = gregorianCalendar.getTime();
SimpleDateFormat fullMonthDateFormat = new SimpleDateFormat(
"dd-MMMM-yyyy HH:mm:ss:SSS");
System.out.println(fullMonthDateFormat.format(date));
印刷品:
01-fevereiro-2018 10:15:20:000
而由于accept language头被设置为“en-us”,因此预期值为
01-February-2018 10:15:20:000
我知道如果我示例化SimpleDataFormat,从 LocaleContextHolder.getLocale()
作为参数,一切都将按预期工作:
SimpleDateFormat fullMonthDateFormat = new SimpleDateFormat(
"dd-MMMM-yyyy HH:mm:ss:SSS", LocaleContextHolder.getLocale());
但是,这是正确的行为吗?既然我所处理的请求实际上有一个localecoxtholder,那么它不应该被用作“默认”语言环境吗?
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!