Изменение языкового стандарта Spring MVC 3 с помощью ссылки не работает
Edit: моя версия Spring framework 3.0.5
небольшая проблема здесь, язык не меняется, когда я нажимаю ссылку смены языка.
языковые файлы (messages_xx.свойства) находятся в каталоге classpath i18n. Файлы:
i18n/messages_en.properties
i18n/messages_ar.properties
Весна Конфигурации
<!-- Component scanner. This is used to automatically find Spring annotations like @Service and @Repository -->
<context:component-scan base-package="com.keype" />
<!-- Annotation driven programming model -->
<mvc:annotation-driven />
<context:annotation-config />
<mvc:resources mapping="/static/**" location="/static/" />
<!-- Session Object Configuration -->
<bean id="session" class="com.keype.system.Session" scope="session">
<aop:scoped-proxy />
</bean>
<!-- The View Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp"
/>
<!-- i18n Configuration. Default language is english. Change language using ?language=en -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
<!-- Message text files. This is set UTF-8 to display Arabic UTF correctly. -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:i18n/messages" />
<property name="defaultEncoding" value="UTF-8"/>
</bean>
раздел из кода JSP
<a href="?lang=ar"><spring:message code="header.arabic" /></a> |
<a href="?lang=en"><spring:message code="header.english" /></a>
проблема в том, когда я нажимаю ссылку выше, чтобы изменить язык, изменение локали функциональность не работает. Я протестировал, изменив "defaultLocate" на "ar", и я получаю арабский текст.
что здесь может быть не так? В журнале tomcat тоже ничего нет.
4 ответов
вы должны зарегистрировать localeChangeInterceptor среди перехватчиков MVC для Spring-MVC, чтобы рассмотреть его. Добавьте перехватчик в конфигурацию:
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang"></property>
</bean>
</mvc:interceptors>
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang" />
</mvc:interceptors>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
еще одна вещь, которая может помочь другим:
в моем случае, я должен добавить в applicationContext.XML. Положить его в пружину-сервлет (ref. диспетчер), не работал вообще.
вам нужно зарегистрировать LocaleChangeInterceptor внутри тега перехватчиков mvc, как показано ниже,
Э. Г.
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="siteLanguage" />
</bean>
</mvc:interceptors>
Я получал ту же ошибку, и она работала с помощью этого кода: -)