【发布时间】:2013-05-06 18:43:20
【问题描述】:
我有两个 i18n 的属性文件,并希望在服务方法中接收本地化消息。我已经注入了messageSource,现在我只想获取用户的语言环境。
- 首先,我尝试通过
LocaleContextHolder.getLocale()执行此操作,但无论请求语言环境如何,它都会返回我的系统语言环境。 - 然后我将
HttpServletRequest注入服务并尝试了这个:RequestContextUtils.getLocaleResolver(request).resolveLocale(request),但甚至没有收到LocaleResolver(它是空的)。
我无法将语言环境从控制器发送到该服务,因为它只是 Spring Security 的 UserDetailsService 的实现
如果重要的话,我会在我的项目中使用CookieLocaleResolver。
【问题讨论】:
-
什么决定了您要使用的语言环境?
-
@soulcheck 不太明白这个问题。我想在授权失败时显示本地化消息,所以我应该知道当前用户区域设置
-
在这种情况下,区域设置由请求确定。您可以在控制器/身份验证拦截器中获取它并将其作为参数传递给服务。
-
您是否将错误消息显示为 jsp 的一部分?
-
是的,我正在显示
${SPRING_SECURITY_LAST_EXCEPTION.message}。如果语言环境存储在请求中,那么向服务注入请求还不够吗?
标签: java spring internationalization locale