【发布时间】: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