SpringMVC 实现国际化

来源:互联网 发布:sql isnull用法 编辑:程序博客网 时间:2024/06/04 01:39

注意:文章是在SpringMVC框架已经存在的基础上介绍添加国际化示例

1. 添加国际化资源文件

资源文件放到配置文件能够找到的位置即可,在这里放在WEB-INF/lang 目录下,如下图所示。

这里写图片描述

2. 修改Spring配置文件

在Spring配置文件springmvc-servlet.xml(或其他)中添加以下代码

<bean id="defaultAnnotationHandlerMapping"  class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  <property name="interceptors">    <list>        <!-- 配置多语言改变的拦截器 -->        <ref bean="localeChangeInterceptor" />    </list>  </property></bean><!-- 国际化资源文件绑定器 --><bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">    <property name="basenames">        <list>            <value>/WEB-INF/lang/M_Messages</value>            <value>/WEB-INF/lang/M_Errors</value>            <value>/WEB-INF/lang/M_Pages</value>        </list>    </property>    <!-- 默认为false,找不到messageKey的话,就抛出NoSuchMessageException -->     <!-- 把它设置为True,则找不到不会抛出异常,而是使用messageKey作为返回值。 -->    <property name="useCodeAsDefaultMessage" value="false" />    <!-- 设置编码类型,注意:message相关的properties文件在创建的时候,-->    <!-- 需要时utf-8类型, 而且网站编码也是utf-8类型,否则可能中文乱码 -->    <property name="defaultEncoding" value="UTF-8" /></bean>    <!-- 可以使用LocaleChangeInterceptor修改本地化信息。 -->    <!-- 这个拦截器需要被添加到处理器映射中。 它可以侦测请求中某个特定的参数, -->    <!-- 然后调用上下文中的LocaleResolver中的 setLocale()方法,相应地修改本地化信息。 --><bean id="localeChangeInterceptor"           class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">    <property name="paramName" value="siteLang" /></bean>    <!-- SessionLocaleResolver允许从用户请求相关的session中获取本地化信息。 --><bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >     <property name="defaultLocale" value="zh_CN"></property></bean>
3. 页面操作
 1. 在jsp顶部引入<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %> 2. 在需要显示的标签出使用:< spring:message code=‘username’/>来代替该标签,     带参数的使用方式:< spring:message code=‘username’arguments="2017,你好"/>
4. 测试使用
浏览器访问: - http://localhost:8910/lang/login.html?siteLang=en_US (英文) - http://localhost:8910/lang/login.html?siteLang=zh_CN (中文简体)

访问不同链接显示的不同效果

这里写图片描述