2014-03-13 67 views
5

在我的應用程序中,我定義了下面的bean,但是當我嘗試使用參數ex更改語言環境時:?lang = es它不適用於我,並且顯示的是缺省值在CookieLocaleResolver中定義的語言環境是英語。Spring MVC語言環境更改不起作用

這裏是我的bean類:

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

<bean id="localeChangeInterceptor" 
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="lang" /> 
</bean> 

<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
    <property name="cookieName" value="lang" /> 
    <property name="defaultLocale" value="en" /> 
</bean> 

<bean 
    class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"> 
    <property name="interceptors"> 
     <list> 
      <ref bean="localeChangeInterceptor" /> 
     </list> 
    </property> 
</bean> 

我想達到的目標是通過參數更改語言並保存相關的cookie的內部,以便作進一步的請求的語言環境是新的語言環境的語言!

我也不想使用下面的類,因爲它已經過時:

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

什麼是錯的我聲明式的bean實現?

回答

7

我相信你應該定義interceptor這樣的:

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

<mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/**" /> 
     <bean id="localeChangeInterceptor" 
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
      <property name="paramName" value="lang" /> 
     </bean> 
    </mvc:interceptor> 
</mvc:interceptors> 

<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
    <property name="cookieName" value="lang" /> 
    <property name="defaultLocale" value="en" /> 
</bean> 

MVC命名空間是這樣定義的:

xmlns:mvc="http://www.springframework.org/schema/mvc" 
.... 
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd" 

確保你使用正確的XSD版本。

+0

什麼是春天的「mvc」命名空間定義?你可以在這裏發佈,這樣我可以把它放在我的應用程序上下文中定義? – M2hp

+0

張貼編輯,只記得使用適當的版本爲您的xsd架構 – kamil

+0

是的,讓我檢查您的解決方案! – M2hp

相關問題