2011-09-19 19 views
2

我想使用localeChangeInterceptor加載不同的語言取決於語言環境,但不知何故,它永遠不會改變。它始終是defaultLocale。春天2.5 localeChangeInterceptor莫名其妙地沒有工作

這裏是我設置了豆

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

我用它來訪問不同語言的網址是:

http://localhost:8080/something/message/login?language=zh_CN 

我想我有一個原因,它不是工作,這是因爲我使用URL映射的註釋。那麼是否有另一種方法來設置帶註釋的localeChangeInterceptor?

回答

1

所以之後我發現,爲什麼它不工作的原因是因爲我使用的標註爲URL映射,其餘很簡單。

而不是使用ControllerClassNameHandlerMapping,我應該使用DefaultAnnotationHandlerMapping。這是如何設置它。

<bean id="annotationMapper" 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
     <list> 
      <ref bean="localeChangeInterceptor"/> 
     </list> 
    </property> 
</bean> 

乾杯!

相關問題