【问题标题】:Spring MVC 3 i18n, how to store locale in session instead of URL parameter?Spring MVC 3 i18n,如何在会话中存储语言环境而不是 URL 参数?
【发布时间】:2014-06-20 16:50:46
【问题描述】:

我正在制作一个支持 i18n 的 Spring Web 应用程序。现在应用程序的工作方式是,如果在 URL 参数中定义了一种语言,它将使用该语言,如果该参数不存在或为空,它将使用默认值。但是我对那里的参数不满意,我想知道是否有一种方法可以将语言环境存储在会话中,这样它就在幕后并持续存在于网络应用程序中的所有页面上(因为现在如果没有语言环境参数在 URL 中,它将使用 defaultLocale)。

我目前的配置是:

applicationConfig.xml

<beans ... >
...
  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
    <property name="defaultLocale" value="hr" />
  </bean>
  <mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" >
      <property name="paramName" value="locale" />
    </bean>
  </mvc:interceptors>
</beans>  

【问题讨论】:

  • 您的设置应该已经按照您的描述进行。 SessionLocalResolver 将使用的语言环境存储在会话中。 LocaleChangeInterceptor 会将其更改为用户想要的,为此它需要一个参数,之后它应该在没有参数的情况下工作。如果不是你的设置有问题。
  • @M.Deinum 嗯...好吧。我猜是时候调试了。
  • 我建议将 mvc 配置移动到 DispatcherServlet 加载的配置,而不是 ContextLoaderListener 加载的配置。

标签: java spring spring-mvc internationalization


【解决方案1】:

我已经设法通过使用而不是标签来解决我的问题,所以我会认为这个问题已经解决。感谢您的帮助。

【讨论】:

  • 嗨@MrPlow,你用什么代替标签解决了这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 2014-09-15
相关资源
最近更新 更多