我有以下表格。
<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 从 session 中获取当前用户语言,因为 lang
参数不一定出现在每个请求中。我怎样才能实现这个目标?
最佳答案
在您的 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
关于java - 如何从 Spring MVC 获取当前使用的区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377373/