Qwe*_*rky 11 java spring spring-mvc internationalization
我想首先通过检测cookie来解析用户的语言环境,如果没有,则通过accept-language标头解析.Spring似乎只想接受单一LocaleResolver.
有趣的是,春天的文件为CookieLocaleResolver州
LocaleResolver实现,使用在自定义设置的情况下发回给用户的cookie,回退到指定的默认语言环境或请求的accept-header语言环境.
但事实上似乎并非如此; 测试显示它不起作用,快速查看源显示它只有在没有cookie时才会获得默认值.
编写自己的LocaleResolver实现是唯一的解决方案吗?
axt*_*avt 12
CookieLocaleResolver只要你没有设置它,它看起来就像你想要的那样defaultLocale.
如果你想要不同的东西(例如,defaultLocale当没有Accept找到cookie或标题时回退到),你可以相应地覆盖它determineDefaultLocale().
示例cookie区域设置解析器首先回退到Accept-Language标头,然后再回退到defaultLocale:
public class CookieThenAcceptHeaderLocaleResolver extends CookieLocaleResolver {
@Override
protected Locale determineDefaultLocale(HttpServletRequest request) {
String acceptLanguage = request.getHeader("Accept-Language");
if (acceptLanguage == null || acceptLanguage.trim().isEmpty()) {
return super.determineDefaultLocale(request);
}
return request.getLocale();
}
}
Run Code Online (Sandbox Code Playgroud)