【问题标题】:LocaleResolver in Spring春季的LocaleResolver
【发布时间】:2011-01-24 12:47:07
【问题描述】:

我正在为我的应用程序使用会话区域设置解析器。我在下拉列表中显示语言。如果用户选择任何一种语言,则重新填充该语言的所有值。

<property name="interceptors">
    <list>
        <ref bean="localeChangeInterceptor" />
    </list>
</property>

<bean id="localeChangeInterceptor"
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="languageCode" />
</bean>

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

但它不是从会话中读取它。它总是考虑浏览器设置中的默认语言。 请帮忙。

【问题讨论】:

  • 如何检查本地是否在会话中设置?
  • 当用户选择新的语言环境并提交页面时,您是否在 URL 中添加了正确的请求参数?在您的情况下,您指定了语言代码的参数名称。所以请求 URL 应该类似于 mysite.com/myPage?languageCode=en

标签: java spring spring-mvc internationalization


【解决方案1】:

你需要通过这种方式获取语言环境:

Locale loc=RequestContextUtils.getLocale(request);

【讨论】:

  • 如果控制器方法被@RequestMapping注解,你可以在方法中添加一个Locale参数,Spring会自动为你提供。 static.springsource.org/spring/docs/3.0.x/…
  • @Kevin Stembridge:我只想说,直接从会话中获取语言环境是一个很好的主意。 -- 当然参数方式比我写的要好很多。
【解决方案2】:

在 Spring 4.0 中我们也可以使用LocaleContextResolver.getLocale() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-06
    • 2016-01-30
    • 1970-01-01
    • 2014-10-03
    • 2015-01-10
    • 2014-11-13
    • 2013-12-22
    相关资源
    最近更新 更多