1

我有两个 i18n 的属性文件,并希望在服务方法中接收本地化消息。我已经注入messageSource,现在我想要的只是获取用户的语言环境。

  1. 首先,我尝试重新执行此操作,LocaleContextHolder.getLocale()但无论请求语言环境如何,它都会返回我的系统语言环境。
  2. 然后我注入HttpServletRequest服务并尝试了这个:RequestContextUtils.getLocaleResolver(request).resolveLocale(request),但甚至没有收到LocaleResolver(它是空的)。

我无法将语言环境从控制器发送到该服务,因为它只是 Spring Security 的实现UserDetailsService

CookieLocaleResolver如果重要的话,我会在我的项目中使用。

4

1 回答 1

1

通常,您希望将表示问题留给表示层。

在您的情况下,由于您想在 jsp 中显示消息,请在该 jsp 中使用<spring:message />(或 plain <fmt:message />)标签,让 spring 担心 l10n。

如果你不能这样做,另一种选择是从你的服务层抛出一个异常,并在你可以访问的控制器/拦截器中处理它,ServletRequest从而访问用户的语言环境。

于 2013-05-06T20:17:40.527 回答