如何在使用Spring 3的SessionLocaleResolver时在JSP中获取访问者的语言环境

9
我需要在我的JSP页面中获取访问者的语言环境,以便我可以正确地显示一个下拉菜单,其中包含一些语言列表,并根据他们当前的语言环境选择相应的语言。通常情况下,我可能会像这样做:${pageContext.request.locale}
问题是,我认为,这只会给我用户请求头中的语言环境(浏览器发送的内容)。但是用户可能已经更改了他们的语言/区域设置,因此我需要使用Spring的机制来查看会话:
RequestContextUtils.getLocale(request).toString();

但是在 JSP 页面中访问它并使 JSP 代码与其配合使用并不容易。

还有没有其他更简单的机制向用户显示语言下拉菜单?Spring 是否将当前区域设置存储在易于从 JSP 访问的对象中?

3个回答

28

对于我们来说

${pageContext.response.locale}

起到了作用。该属性遵循了Spring的区域解析器所设定的内容。


2
当您使用SessionLocaleResolver时,当前的语言环境将使用SessionLocaleResolver类中指定的属性名称存储在会话中。对SessionLocaleResolver的引用使用另一个属性名称(org.springframework.web.servlet.DispatcherServlet#LOCALE_RESOLVER_BEAN_NAME)存储在请求中。
我没有看到在JSP页面中直接获取语言环境的简单方法,除非使用Java代码。
我将在控制器中获取当前的语言环境,并创建可选择语言列表,并将其添加到模型中。这将使代码易于测试,并将Java代码从JSP移动到控制器中。

1

一行解决方案...

RequestContextUtils.getLocale(request)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接