spring - Spring setLocale
问题描述
我有一个自定义public Locale resolveLocale(HttpServletRequest request) {
检查浏览器语言,但也检查用户是否经过身份验证,因为如果是这样,它将根据用户的设置再次更改语言环境。
现在,我正在尝试通过允许页面保存lang
文档中解释的参数来将语言选择器添加到未经身份验证的页面。我目前有这个:
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
我注意到,通过转到?lang=en
添加了例如的页面,setLocale
正在调用,这就是我被卡住的地方。我似乎无法找出如何在这种方法中实际设置语言?我目前有这个,但这导致StackOverflowError
:
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, locale);
}
有人能帮我吗?:D
解决方案
这是我在程序中的做法,没有问题
@Bean
public LocaleResolver localeResolver() {
return new SessionLocaleResolver();
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new
LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
之后,它应该可以在 url 中调用它?lang=en
推荐阅读
- amazon-web-services - Terraform:如何在项目之间迁移状态?
- java - 如何使用 Spring Boot 向 http2 微服务发出 post 请求?
- python - CSV 中的数据管理
- javascript - 试图让一些按钮做同样的事情
- javascript - 确定子 div 是否有内容
- ios - 更新到 FB API 后无法获取用户信息
- bash - 将(特定)错误写入标准错误后立即停止 bash 命令
- terminal - SBCL 错误:“当前帧没有调试变量:使用 EVAL 而不是 EVAL-IN-FRAME。”
- java - 了解 Kubernetes Watch (kubernetes-client/java api)
- html - Bootstrap4 模态标题未完全居中