如何从Spring MVC获取当前使用的语言环境?

时间:2011-03-21 12:09:17

标签: java spring spring-mvc

我有以下表格。

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl" ${param.lang == 'pl' ? 'selected' : ''} >PL</option>
        <option value="en" ${param.lang == 'en' ? 'selected' : ''} >EN</option>
    </select>
</form>

Spring MVC设置语言参数并关注i18n / l10n。我想更改${param.lang}以使其从Spring MVC的会话中获取当前用户语言,因为lang参数不一定存在于每个请求中。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

在xml配置中添加以下内容:

...

<mvc:interceptors>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
            p:paramName="lang" />
    </mvc:interceptors>

<bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>
    <bean class="org.springframework.web.servlet.i18n.CookieLocaleResolver"
        id="localeResolver" p:cookieName="locale" />
...

将代码替换为:

<form id="langForm" action="" method="get">
    <select name="lang" id="lang" class="styled" onchange="this.form.submit();">
        <option value="pl">PL</option>
        <option value="en">EN</option>
    </select>
</form>

使用此配置,所选的区域设置将保存在cookie浏览器中。

不要忘记标记中文件开头的名称空间: 的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.0.xsd

教程here