Spring LocalContextHandler用法
我对LocalContexHandler很陌生。我已经读过了。据我所知,它用于检索java应用程序中的语言环境信息 我正在从url传递区域设置,如下所示:Spring LocalContextHandler用法,spring,internationalization,Spring,Internationalization,我对LocalContexHandler很陌生。我已经读过了。据我所知,它用于检索java应用程序中的语言环境信息 我正在从url传递区域设置,如下所示: url?lang=fr 当我尝试检索java应用程序中的语言环境时,如下所示: Locale=LocaleContextHolder.getLocale() 它给出的是空值。有人能帮我了解一下它的用法吗?或者有其他替代方法吗?如果你想在URL中传递语言环境,你必须注册localechangereceptorinterceptor并创建Loca
url?lang=fr
当我尝试检索java应用程序中的语言环境时,如下所示:
Locale=LocaleContextHolder.getLocale()代码>
它给出的是空值。有人能帮我了解一下它的用法吗?或者有其他替代方法吗?如果你想在URL中传递语言环境,你必须注册localechangereceptor
interceptor并创建LocaleResolver
bean。例如,SessionLocaleResolver
在会话中存储选定的区域设置。然后LocaleContextHolder#getLocale
将返回非空值。查看Spring文档中的第节。下面可以看到示例的基本Java配置
如果您只想使用LocaleContextHolder
,则必须在调用LocaleContextHolder\getLocale
之前从代码中调用LocaleContextHolder\setLocale
。它只是一个简单的holder类,将LocaleContext
存储在ThreadLocal
变量中
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
// Rest of Web MVC configuration omitted
@Override
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
registry.addInterceptor(localeChangeInterceptor());
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale("fr");
return sessionLocaleResolver;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("lang");
return interceptor;
}
}
我在application-context.xml文件中添加了区域设置解析器,在添加该解析器之后,我刚刚添加了LocaleContextHolder.getLocale();在我的申请中。但它仍然无法获取当前区域设置。SessionLocalerResolver正在会话中存储区域设置信息。但是在我的java应用程序中,我没有使用任何请求、响应或会话对象。那么我如何从中检索区域设置信息呢?您编写了我正在从url传递区域设置,如下所示:url?lang=fr
,因此我认为您正在应用程序中使用请求、响应和会话。请详细说明问题,并举例说明您的无效解决方案。