【问题标题】:Spring MVC 3 localeChangeInterceptorSpring MVC 3 localeChangeInterceptor
【发布时间】:2013-08-17 10:23:45
【问题描述】:

我想将国际化添加到我的 Spring MVC 应用程序中。我知道这可能是一个复制问题,但我已经尝试了 stackoverflow 和谷歌的所有解决方案,但仍然无法正常工作。我会详细解释。这里是

web.xml

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>

根上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Root Context: defines shared resources visible to all other web components -->


    <!-- Localization Start -->

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="basenames">
            <list>
                <value>/WEB-INF/messages</value>
            </list>
        </property>
    </bean>

    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="tr" />
    </bean>

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

    <bean id="handlerMapping"
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>


    <!-- Localization End -->   

</beans>

我有 messages_en.properties 和 messages_tr.properties 文件。而且它们确实有效,因为当我将 defaultLocale 更改为 en 或 tr 时,我会从属性文件中获得真正的标签。 但问题是当我从浏览器?lang=tr or ?lang=en 尝试时,没有任何变化。

感谢关注!

【问题讨论】:

  • 检查每个配置是否只有一个 HandlerMapping

标签: java spring spring-mvc internationalization


【解决方案1】:

如果您使用的是 Spring Security 将您的 LocaleChangeInterceptor 放入 mvc:interceptors 标记中,例如

  <mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>
  </mvc:interceptors>

并从配置中删除 handlerMapping bean。希望它会起作用。

【讨论】:

  • 我已经用这种方式解决了我的问题。但无论如何,我会检查它作为接受的答案。谢谢
猜你喜欢
  • 2012-07-29
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多