如何从Spring获取当前用户区域设置而不将其作为参数传递给函数?


问题内容

我正在使用Spring 3.1,并且想要找到当前用户有效的语言环境,有没有一种方法可以直接获取语言环境,而不必强制将其从控制器传递给服务层…等等。

spring是否将语言环境存储在线程本地存储中,可以通过调用某些静态方法来获取它?


问题答案:

我也一直在寻找如何在不经过环境的情况下访问语言环境的方法Locale,但是我对Spring还是很陌生,发现大多数解决方案令人困惑。但是事实证明,Spring
MVC确实将语言环境存储在线程本地存储中。可以通过以下方式访问它:

Locale locale = LocaleContextHolder.getLocale();

最后一种方法是基于线程本地的,以便在体系结构的任何实体中提供当前的语言环境。[…]您必须知道,默认情况下,LocaleContextHolder的内容对应于Web请求中指定的语言环境。

来自:使用Spring MVC
3配置语言环境切换
。(该文章还提供了用于获取语言环境的替代配置/方法,这对于希望这样做的任何人可能都是有用的)。

您也可以在此处查看LocaleContextHolderSpring
的文档。