Java 使用SessionLocalerResolver检索区域设置信息
我在application-context.xml中包含了以下内容: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
<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>