Spring MVC网络应用程序i18n

mad*_*ulf 3 java configuration spring-mvc internationalization

在使用spring-MVC编写的Web应用程序中,我希望允许用户通过单击文本是该语言名称的链接来更改当前语言.

我已经设置了一个messageSource,并使我的所有jsp页面都使用这个messageSource查找消息.目前,语言正在根据用户浏览器的区域设置而变化.

所以,我现在要做的是允许手动更改语言环境.

我发现SessionLocaleResolver类可以提供帮助,但我不知道如何在我的应用程序上下文文件中设置它(名称是myAppName-servlet.xml).

我已经定义了bean:

<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
</bean>
Run Code Online (Sandbox Code Playgroud)

但是我应该在哪个bean中插入这个?此外,如何将与区域设置相关的cookie设置为用户会话?

mad*_*ulf 6

我需要的所有信息都在文档中,在我面前,在:

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-localeresolver

简而言之,我将以下xml改编为myAppName-servlet.xml

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

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

<bean id="urlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <value>/**/*.view=someController</value>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

现在,只需使用参数访问任何页面即可:

siteLanguage=locale
Run Code Online (Sandbox Code Playgroud)

更改整个站点的区域设置.

例如:http:// localhost:8080/SBrowser/deliveries.html?siteLanguage = frenter code here