spring MVC国际化的简单实现

需要的工程jar包这里就不多说,网上有很多可以下载。下面直接入正题

  1. 要实现的功能如下,点击语言列表可以切换语言
    这里写图片描述
    这里写图片描述

2.下面是需要的一些文件

下面是几种语言的.properties文件
中文的配置文件message_zh_CN.properties(中文的会自动转码)

passwordModifyPage=\u5BC6\u7801\u4FEE\u6539\u9875\u9762
employeeId=\u5458\u5DE5\u5DE5\u53F7
changePassword=\u5BC6\u7801\u4FEE\u6539
logout=\u5B89\u5168\u9000\u51FA
admin=\u7BA1\u7406\u5458\u754C\u9762
international=\u56FD\u9645\u5316
English=\u82F1\u8BED
Chinese=\u4E2D\u6587
Japanese=\u65E5\u6587
currentLocation=\u5F53\u524D\u4F4D\u7F6E<<\u5BC6\u7801\u4FEE\u6539\u754C\u9762
oldPassword=\u539F\u5BC6\u7801
newPassword=\u65B0\u5BC6\u7801
example=\u4F8B\u5982
ConfirmPassword=\u786E\u8BA4\u65B0\u5BC6\u7801
notice=\u6CE8\u610F:\u5BC6\u7801\u53EF\u4EE5\u4E3A6-16\u4F4D\u82F1\u6587\u5B57\u6BCD\u3001\u6570\u5B57\u3002
determine=\u786E\u5B9A
cancel=\u53D6\u6D88
changePassword01=\u5BC6\u7801\u4FEE\u6539\u6210\u529F
changePassword02=\u4E24\u6B21\u65B0\u5BC6\u7801\u8F93\u5165\u4E0D\u4E00\u81F4
changePassword03=\u539F\u5BC6\u7801\u8F93\u5165\u4E0D\u6B63\u786E

英文配置文件message_en_US.properties

passwordModifyPage=Password modify page
employeeId=Employee number
changePassword=Change Password
logout=Safe exit
admin=Administrator interface
international=International
English=English
Chinese=Chinese
Japanese=Japanese
currentLocation=Current location<<Password modification interface
oldPassword=Original password
newPassword=New password
example=for example
ConfirmPassword=Confirm new password
notice=Notice:Password can be 6-16 bits of English letters, numbers
determine=Determine
cancel=Cancel
changePassword01=Password modification success
changePassword02=Two new password input inconsistent
changePassword03=The original password is not correct

spring-local.xml配置文件(上面有注释就不多说了)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- 国际化资源文件 -->
    <!-- bean id必须为messageSource,不然会报错NoSuchMessageException -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>

                <value>classpath:resource/message</value>
                <value>classpath:resource/ValidationMessages</value>
            </list>
        </property>
        <!-- 资源文件刷新间隔,默认-1,表示永不刷新 -->
        <property name="cacheSeconds" value="0" />
        <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
        <property name="useCodeAsDefaultMessage" value="true" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <!-- 配置视图层 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- bean id必须为localeResolver,让DispatcherServlet可以自动侦测到它 -->
    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <!-- 默认语言设置 -->
        <!-- <property name="defaultLocale" value="zh" /> -->
    </bean>
    <mvc:interceptors>
        <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->
        <bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="lang" />
        </bean>
    </mvc:interceptors>
    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
        <property name="validationMessageSource" ref="messageSource" />
    </bean>

</beans>

在web.xml中记得要引入

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>yzyg-wagemanage</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:config/spring-application.xml
        classpath*:config/spring-mvc.xml
        classpath*:config/spring-resources.xml
        <!--
        classpath*:config/spring-security.xml
         -->
        classpath*:config/spring-redis.xml
        <!-- 国际化 -->
        classpath*:config/spring-locale.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <filter>
    <filter-name>charsetEncoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>charsetEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
<!--   <filter> -->
<!--     <filter-name>springSecurityFilterChain</filter-name> -->
<!--     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> -->
<!--   </filter> -->
<!--   <filter-mapping> -->
<!--     <filter-name>springSecurityFilterChain</filter-name> -->
<!--     <url-pattern>/*</url-pattern> -->
<!--   </filter-mapping> -->
  <servlet>
    <servlet-name>springServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:config/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

3.jsp页面上<中文/英文/日语>的代码如下(这几个词也做了国际化)

<div style="color: white; text-align: right;">
        <a href="?lang=zh_CN" style="color: white"><spring:message
                code="Chinese" /></a>&nbsp;|&nbsp<a href="?lang=en_US"
            style="color: white"><spring:message code="English" /></a>&nbsp;|&nbsp;<a
            href="?lang=_ja" style="color: white"><spring:message
                code="Japanese" /></a>
    </div>

记得在页面眉头上导入spring标签

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

截取部分做了国际化的jsp页面的代码(将需要国际化的语句用spring标签替换,code的值就是.properties文件中的key)

<div class="btn-group" style="float: right;">
            <button type="button" class="btn btn-danger" style="width: 200px;">
                <span class="glyphicon glyphicon-user">asdasdasdasdasdasd</span>
            </button>
            <button type="button" class="btn btn-danger dropdown-toggle"
                data-toggle="dropdown" style="width: 80px;">

                <span class="glyphicon glyphicon-cog"></span> <span class="sr-only">Toggle
                    Dropdown</span>
            </button>
            <ul class="dropdown-menu" role="menu" style="width: 280px;">
                <li><a href="${ctx}/changePassword"><spring:message
                            code="changePassword" /></a></li>
                <li><a href="${ctx}/administrator"><spring:message
                            code="admin" /></a></li>
                <li><a href="#"><spring:message code="international" /></a></li>
                <li class="divider"></li>
                <li><a href="${ctx}/toLoginout"><spring:message
                            code="logout" /></a></li>
            </ul>
        </div>

4.因为js文件中无法用spring标签,如果js中也有要国际化的语句,那就需要单独建一个message.jsp文件。如下

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<style type="text/css">
<!--
.has-error {
    color: #ff0000;
    font-size: 10pt;
}
-->
</style>
<!--  scripts defined message -->
<script type="text/javascript">
    //密码修改成功
    function changePassword01() {
        return '<spring:message code="changePassword01"></spring:message>';
    };
    //两次输入的新密码不正确
    function changePassword02() {
        return '<spring:message code="changePassword02"></spring:message>';
    };
    // 输入的原密码不正确
    function changePassword03() {
        return '<spring:message code="changePassword03"></spring:message>';
    };


</script>

js文件如下

// /////////////////// Form提交 开始 /////////////////////
function formSubmit() {
    if (!validate("passwordForm", rule, message)) {
        return false;
    }
    var inputParams = new Input();
    inputParams.employeeId = $("#employeeId").val();
    inputParams.oldPassword = $("#oldPassword").val();
    inputParams.newPassword = $("#newPassword").val();
    inputParams.confirmPassword = $("#confirmPassword").val();
    var params = JSON2.stringify(inputParams);
        //js代码单独放在js文件中时,url用下面的写法
    var url = "/项目名/resetPassword0101";

    ajaxJson(url, true, params, function(resultObject) {

        if (resultObject) {
            if (resultObject.rt == "1") {

                // 密码修改成功
                alert(changePassword01());
            } else if (resultObject.rt == "2") {

                // 两次输入的新密码不正确
                alert(changePassword02());
            } else {

                // 输入的原密码不正确
                alert(changePassword03());
            }
        }
    });
}
// ///////////////////Form提交 结束 /////////////////////

5.下面是简单的演示
这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值