3

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

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

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

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

我已经定义了 bean:

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

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

4

1 回答 1

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>

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

siteLanguage=locale

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

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

于 2009-04-07T16:05:19.490 回答