Spring LocalContextHandler用法

Spring LocalContextHandler用法,spring,internationalization,Spring,Internationalization,我对LocalContexHandler很陌生。我已经读过了。据我所知,它用于检索java应用程序中的语言环境信息 我正在从url传递区域设置,如下所示: url?lang=fr 当我尝试检索java应用程序中的语言环境时,如下所示: Locale=LocaleContextHolder.getLocale() 它给出的是空值。有人能帮我了解一下它的用法吗?或者有其他替代方法吗?如果你想在URL中传递语言环境,你必须注册localechangereceptorinterceptor并创建Loca

我对LocalContexHandler很陌生。我已经读过了。据我所知,它用于检索java应用程序中的语言环境信息

我正在从url传递区域设置,如下所示:
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
,因此我认为您正在应用程序中使用请求、响应和会话。请详细说明问题,并举例说明您的无效解决方案。