使用Spring MVC配置语言环境切换

时间:2015-08-04 08:20:19

标签: java spring spring-mvc

首先我要说的是,我是开发Spring Application的绝对初学者。我尝试做的是从' en'切换区域设置。到了' de'为此我找到了下面的配置,我把它放在我的mvc-dispatcher-servlet.xml

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
          <property name="basename" value="Messages" />
   </bean>

   <!-- Localization Start -->
   <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>

之后我希望我可以通过添加&#39;?language = de&#39;来更改语言环境。在现有网址后面。所以请求&#39; http://localhost:8080/?language=de&#39;应该切换语言环境。这没用。该网站以定义的默认语言

显示

我的属性文件位于/ src / main / resources中。名称是“Messages_en.propperties”和“Messages_de.propperties”。如果我将默认语言切换为“de”,则加载正确的语言文件,并以德语显示网站。 有人知道我的配置有什么问题吗?

1 个答案:

答案 0 :(得分:2)

我相信您必须在Spring

中使用拦截器注册LocaleChangeInterceptor
<!-- Declare the Interceptor -->
<mvc:interceptors>    
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
          p:paramName="locale" />
</mvc:interceptors>

LocaleChangeInterceptor配置为查找参数名称“locale”以指示用户区域设置的更改,并使用Spring MVC命名空间注册为拦截器。例如,将“locale = es”添加到URL会将语言环境更改为西班牙语。