Spring 2.5 localeChangeInterceptor以某种方式不起作用

时间:2011-09-19 19:56:20

标签: spring locale

我正在尝试使用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吗?

2 个答案:

答案 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