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

at.*_*at. 9 spring jsp spring-mvc java-ee spring-3

我需要在JSP页面中获取访问者的语言环境,以便我可以正确显示包含语言列表的下拉菜单,并根据其当前语言环境选择所选语言.通常我可能会做类似的事情${pageContext.request.locale}.

我认为问题是,只会根据用户的请求标题(浏览器发送的内容)给出区域设置.但是用户可能已经改变了他们的语言/语言环境,所以我需要使用Spring的机制来查看会话:

RequestContextUtils.getLocale(request).toString();
Run Code Online (Sandbox Code Playgroud)

但是,在JSP页面中访问它并使JSP代码可以使用它并不容易.

或者是否有另一种更简单的机制向用户显示语言下拉菜单?Spring是否将当前语言环境存储在可从JSP轻松访问的对象中?

Jan*_*omä 24

为了我们

${pageContext.response.locale}
Run Code Online (Sandbox Code Playgroud)

做了伎俩.此属性遵循Spring的语言环境解析器设置的属性.


Pet*_*ter 2

当您使用 SessionLocaleResolver 时,当前区域设置将使用 SessionLocaleResolver 类中指定的属性名称存储在会话中。对 SessionLocaleResolver 的引用使用另一个属性名称 (org.springframework.web.servlet.DispatcherServlet#LOCALE_RESOLVER_BEAN_NAME) 存储在请求中。

我没有看到在不使用 java 代码的情况下直接在 jsp 页面中获取语言环境的简单方法。

我将获取当前区域设置并在控制器中创建可选语言列表并将其添加到模型中。

这使得代码可测试并将 java 代码从 jsp 移动到控制器中。