java - AcceptHeaderLocaleResolver 的 defaultLocale 不起作用
问题描述
我添加了 AcceptHeaderLocaleResolver。
@Configuration
public class ApplicationContextConfig {
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.KOREA); // ko_KR
return localeResolver;
}
}
但是,当我从没有接受语言标头的 http 请求中获取语言环境时,它会返回我系统的语言环境。
public class CustomIntercepterAdapter extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
request.getHeader("accept-language"); // null
request.getLocale().toString(); // en_KR;
}
}
为什么 defaultLocale 不起作用?
解决方案
request.getLocale()的值由您的 Web 容器(例如Tomcat )确定,因此 spring localeResolver 不能不影响该值。这个值是Locale.getDefault(),如果你想改变你的默认语言环境,你可以再添加一个代码
@Configuration
public class ApplicationContextConfig {
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.KOREA); // ko_KR
Locale.setDefault(Locale.KOREA);
return localeResolver;
}
}
推荐阅读
- outlook - Outlook 加载项 cookie 在桌面应用程序中清除,但为什么 localStorage 有效?
- javascript - 如何从 useLocation() 中持久化数据?
- xcode - agvtool 报告“找不到 Foo.xcodeproj/../NO”
- python - 试图将具有不同“花色/颜色”的卡片相互比较
- python - Flask/MongoDB - 当我刷新或与我的网站交互时数据消失
- excel - 用 VBA 插值
- c# - 为操作系统 Cosmos C# 创建安装程序
- arrays - 是否有一个 C 函数,给定具有不同数据类型的结构数组,可以使用任何一种数据类型对数组进行排序
- asp.net-mvc - 如何在 mvc 中为日期设置初始值?
- powerbi - 根据过滤器选择更改矩阵的列名