我正在尝试使用localeChangeInterceptor加载不同的语言取决于语言环境,但不知何故它永远不会改变。它始终是defaultLocale。
以下是我设置bean的方法
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<!-- Register the message.properties -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="message" />
</bean>
我用来访问不同语言环境的URL是:
http://localhost:8080/something/message/login?language=zh_CN
我认为我之所以无法正常工作,是因为我使用了注释来进行URL映射。那么有另一种方法来设置带注释的localeChangeInterceptor吗?
答案 0 :(得分:1)
因此,在我注意到它无法工作的原因是因为我正在使用注释进行URL映射,其余部分很简单。
我应该使用DefaultAnnotationHandlerMapping而不是使用ControllerClassNameHandlerMapping。这就是如何设置它。
<bean id="annotationMapper"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
干杯!
答案 1 :(得分:0)
由于您手动设置了paramName,因此应使用以下URL: http://localhost:8080/something/message/login?language=zh_CN