如何使用Spring 3的SessionLocaleResolver在JSP中获取访问者的语言环境
-
28-10-2019 - |
题
我需要在JSP页面中获取访问者的语言环境,以便可以正确显示带有语言列表的下拉菜单,并根据其当前语言环境选择语言。通常我可能会做类似${pageContext.request.locale}
的事情。
我认为的问题是,这只会根据用户的请求标头(浏览器发送的内容)为我提供语言环境。但是用户可能已经更改了他们的语言/语言环境,所以我需要使用Spring的机制来查看会话: 通用标签
但是在JSP页面中访问并让JSP代码使用它并不是那么容易。
还是有另一种更简单的机制可以向用户显示语言的下拉菜单?Spring是否将当前语言环境存储在可以从JSP轻松访问的对象中?
解决方案
在使用SessionLocaleResolver时,当前的语言环境使用SessionLocaleResolver类中指定的属性名称存储在会话中。对SessionLocaleResolver的引用使用另一个属性名称(org.springframework.web.servlet.DispatcherServlet#LOCALE_RESOLVER_BEAN_NAME)存储在请求中。
我看不到不使用Java代码直接在jsp页面中直接获取语言环境的简便方法。
我将获取当前语言环境,并在控制器中创建可选语言的列表,并将其添加到模型中。
这使代码可测试,并将Java代码从jsp移入控制器。
其他提示
对我们来说 通用标签
成功了。此属性遵循Spring的语言环境解析器设置的内容。
单行解决方案.. 通用标签
不隶属于 StackOverflow