【问题标题】:Spring MVC web app i18nSpring MVC Web 应用程序 i18n
【发布时间】:2010-10-18 02:25:52
【问题描述】:

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

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

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

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

我已经定义了 bean:

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

但是我应该在哪个 bean 中插入这个?此外,如何将与语言环境相关的 cookie 设置到用户会话中?

【问题讨论】:

    标签: java configuration internationalization spring-mvc


    【解决方案1】:

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

    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>
    

    现在,使用参数访问任何页面就足够了:

    siteLanguage=locale
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-21
      • 2014-10-26
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2015-10-24
      • 2013-10-21
      • 2015-10-23
      相关资源
      最近更新 更多