1.springMVC对页面固定文本信息的国际化展示
2.springMVC对后台注解验证的返回信息国际化显示
3.springMVC对系统数据类型的验证的错误信息国际化显示
一.XXXServlet.xml
<!-- 配置mvc拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<ref bean="localeChangeInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
<!-- 配置国际化拦截器 -->
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<!-- spring 加载资源文件-->
<!-- 可以不重启服务器,读取资源文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="basenames">
<list>
<!-- 页面信息国际化 -->
<value>/WEB-INF/classes/messages/messages</value>
<!-- 类型不匹配国际化 -->
<value>/WEB-INF/classes/mismatch/mismatch</value>
<!-- 后台验证国际化 -->
<value>ValidationMessages</value>
</list>
</property>
<property name="cacheSeconds" value="-1"/>
</bean>
<!-- cookie国际化 -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="zh" />
<property name="cookieMaxAge" value="-1" />
</bean>
配置文件结构如下图所示:
关于以上配置信息注意一下几点:
1.需要将国际化拦截器加到mvc拦截器中,这样所有请求才会进行国际化处理
2.对于国际化文件的加载目录,与项目发布到服务器中的路径相关,除了后台验证时默认的ValidationMessages
3.这里使用的是cookieLocalResolver,没有使用sessionLocalResolver,AcceptHeaderLocaleResolver,因为可能会出现Cannot change HTTP accept header - use a different locale resolution strategy
jsp页面配置:
1.页面信息
<spring:message code="message.hello.register.date"/>
2.验证错误信息返回
<form:errors path="date"/>
Cannot change HTTP accept header - use a different locale resolution strategy
需要重写AcceptHeaderLocaleResolver类,具体不做演示。