springboot restcontroller接受语言头并请求默认语言环境

vfhzx4xs  于 2021-07-23  发布在  Java
关注(0)|答案(0)|浏览(238)

我将支持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,那么它不应该被用作“默认”语言环境吗?
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题