spring3国际化不能正常运作

时间:2015-01-05 09:09:21

标签: java spring spring-mvc

我是spring的新手。我在我的项目中使用了spring国际化.Below是我的配置

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en"/>
</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>

在属性文件夹中,我有三个文件。 的 messages.properties

label.username=user

messages_en.properties

label.username=hddhd

messages_es.properties

label.username=lalal

我使用<spring:message code="label.username" />此标记显示消息。

但是这个总是打印来自messages.properties的值。 它总是打印用户。

即使我给出如下的网址

[http://localhost:8080/Project/?lang=en
http://localhost:8080/Project/?lang=es][1]

为什么不从文件messages_en和messages_es

中获取值

任何帮助将不胜感激!!!

2 个答案:

答案 0 :(得分:2)

使用<mvc:annotation-driven />时,配置DefaultAnnotationHandlerMapping将无效。您应该使用<mvc:interceptors />元素来注册拦截器。

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

除此之外,它不适用于较新版本的Spring(2.5之后的所有内容)在DefaultAnnotationHandlerMapping的情况下不再使用<mvc:annotation-driven />

答案 1 :(得分:0)

不要忘记添加此行

<%@ page contentType="text/html;charset=UTF-8" %>