Java 使用SessionLocalerResolver检索区域设置信息

Java 使用SessionLocalerResolver检索区域设置信息,java,spring,locale,Java,Spring,Locale,我在application-context.xml中包含了以下内容: <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:messages" /> <property name="defaultE

我在application-context.xml中包含了以下内容:

<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />


<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>
Web.xml包含:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

org.springframework.web.context.ContextLoaderListener
appServlet
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
1.

调试时,区域设置采用空值。它应该采用新设置的区域设置值。我通过传递?lang=fr通过url设置的值。Locale值应该设置为fr,但它只是给出null。还有别的办法可以做吗?需要一些建议。

不要那样做。使用
LocalContextHolder
检索当前
Locale
。或者简单地添加一个类型为
Locale
的方法参数。演示什么?如果将
加载到
ContextLoaderListener
中,则不会对
DispatcherServlet
配置的bean执行任何操作。如果使用
LocaleContextHolder正确配置了所有内容,则getLocale()
应提供当前的
区域设置。但是,正如我所提到的,如果您的
LocaleResolver
和拦截器是由
ContextLoaderListener
加载的,而不是
DispatcherServlet
至少是由拦截器加载的,那么它将不起作用。如果您是新手,我建议您阅读参考指南和一些教程。在你的web.xml中,你可以看到哪些文件是由什么加载的
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>