9

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

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

RequestContextUtils.getLocale(request).toString();

但是,在 JSP 页面中访问它并让 JSP 代码使用它并不是那么容易。

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

4

3 回答 3

27

为了我们

${pageContext.response.locale}

成功了。此属性遵循 Spring 的语言环境解析器设置的内容。

于 2014-05-22T13:25:21.137 回答
2

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

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

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

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

于 2011-09-20T16:33:23.717 回答
1

一条线解决..

RequestContextUtils.getLocale(request)
于 2012-12-13T06:21:05.730 回答