spring3 国际化无法正常工作
spring3 internationalization not working properly
我是 spring.I 的新手,在我的配置中使用 spring 国际化 project.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 的值。
它总是打印 user.
即使我给url如下
[http://localhost:8080/Project/?lang=en
http://localhost:8080/Project/?lang=es][1]
为什么没有从文件 messages_en 和 messages_es
中获取值
任何帮助将不胜感激!!!
当使用 <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 之后的所有版本)在 <mvc:annotation-driven />
.[=16 的情况下不再使用 DefaultAnnotationHandlerMapping
=]
不要忘记添加这一行
<%@ page contentType="text/html;charset=UTF-8" %>
我是 spring.I 的新手,在我的配置中使用 spring 国际化 project.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 的值。 它总是打印 user.
即使我给url如下
[http://localhost:8080/Project/?lang=en
http://localhost:8080/Project/?lang=es][1]
为什么没有从文件 messages_en 和 messages_es
中获取值任何帮助将不胜感激!!!
当使用 <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 之后的所有版本)在 <mvc:annotation-driven />
.[=16 的情况下不再使用 DefaultAnnotationHandlerMapping
=]
不要忘记添加这一行
<%@ page contentType="text/html;charset=UTF-8" %>