Spring MVC与easyui国际化

本文详细介绍了如何在SpringMVC项目中实现国际化功能,包括创建资源文件、配置SpringMVC、在不同场景下调用国际化资源、解决乱码问题以及实现语言切换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.建立资源文件

         在webapp下建立文件夹language,在其中再添加file,命名分别为language.properties,language_en.properties,language_zh_CN.properties。其中language.properties为默认资源文件。

         在其中添加内容,格式如下:

         language.properties

                   welcome=Welcome

         language_en.properties

                   welcome=Welcome

         language_zh_CN.properties

                   welcome=\u6b22\u8fce

         其中welcome为key,在jsp中调用使用的就是这个,汉语的需要使用unicode编码(在eclipse的properties文件中输入汉语会自动转换成unicode。\u6b22\u8fce-欢迎)

2.配置springMVC

         在demo-servlet.xml中添加如下

<mvc:interceptors>
        <!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<!-- Saves a locale change using a session-->
<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 国际化文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/language/language" />
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

         其中<property name="basename" value="/language/language" />value即为资源文件所在,不需要后缀名.properties。

3.调用国际化

3.1 在web中调用国际化

jsp文件头添加

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>

jsp HTML显示内容处将内容更改,如

<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true">
    Welcome
</a>

更改为

<a href="javascript:void(0)" class="easyui-linkbutton" data-options="plain:true">
    <spring:message code="welcome"/>
</a>

<input type="text" value="welcome" />

更改为

<input type="text" value='<spring:message code="welcome"/>' />

3.2 在javascript中调用国际化

jsp文件头中添加

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>

$.messager.alert('info');

更改为

$.messager.alert('<spring:message code="message.info"/>');

注意:1.<spring>标签不可以这样写"<spring:message code=\"message.info\"/>"这样会出错。

    2.在_en文件中key的值不可以使用\或'符号。

3.3 在java中调用国际化

controller中使用

if(!model.containsAttribute("contentModel")){

    RequestContext requestContext = new RequestContext(request);

    String welcome = requestContext.getMessage("welcome");

}

其中request为HttpServletRequest,model为Model。

4 解决乱码

4.1 中文输入乱码

         完成了上面的步骤之后,会发现XCenter界面中输入汉语,点击确定,往数据库中写入汉语时,写入的是乱码。

解决办法如下:

         在applicationContext.xml中的

<property name="url" value="${jdbc.url}"/>

更改为 

<property name="url" value="${jdbc.url}?useUnicode=true&amp;characterEncoding=UTF-8"/>

    注意:不要在jdbc.properties中的jdbc.url=jdbc:mysql://localhost:3306/demo之后添加?useUnicode=true&amp;characterEncoding=UTF-8,这样是不正确的。

4.2 部分界面显示中文乱码

         接下来发现在大部分界面因为添加了这句

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

可以正常显示中文了,但是XCenter部分界面中文显示为???,经过检查发现是因为在controller中返回值为String,而且标记为@ResponseBody,查资料发现是因为Spring MVC中@ResponseBody默认编码是ISO-8859-1(其他的都是UTF-8,谁知道为什么同一个框架中这里要用另外一种编码)。

         解决办法:

         在

@RequestMapping(value = "welcome", method = RequestMethod.POST)

中添加produces = "application/json; charset=utf-8"

变成

@RequestMapping(value = "welcome", method = RequestMethod.POST, produces = "application/json; charset=utf-8")

         然后会发现在部分的tree中中文仍然显示为乱码,发现是因为返回值转换成JSON格式的原因。

         解决办法:

         tree的返回值格式化将

JSON.toJSONStringWithDateFormat(rs.getDefaultModel(), "yyyy-MM-dd HH:mm:ss");

  更改为

JSON.toJSONString(rs.getDefaultModel());

5 中英文切换

5.1 资源文件的中英文切换

         这个比较简单,使用如下代码就行

<a href="?locale=en" onclick="changeLanguage('en')">English</a>
<a href="?locale=zh" onclick="changeLanguage('zh_CN')">简体中文</a>

5.2 easyui框架的中英文切换

         easyui中有些框架(如datagrid)有些内容是框架自带的,需要在<head>中加入

<script type="text/javascript" src="js/locale/easyui-lang-zh_CN.js"></script>

那如何切换中英文呢

首先不要在<head>中添加上面这句,然后在主界面<head>中加入如下js语句

<script type="text/javascript">

    var language=window.navigator.language;
    var userLanguage="${sessionScope['org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE']}";

    if(null != userLanguage&&userLanguage!=""){//not login
        language = userLanguage;
    }

    $(function(){
        var src = 'js/locale' + '/easyui-lang-'+language.replace("-","_")+'.js';// when login in China the language=zh-CN     
        $.getScript(src);
    });

</script>

这是使用jquery加载js文件。

 

接下来将项目中需要替换的内容全部用步骤3中的方法替换就行了,这样国际化就完成了。

转载于:https://www.cnblogs.com/zhhw9210/p/3823922.html

######################################## jQuery EasyUI 1.5.2 版中文版开发工具包 EasyUI Development Toolkit Build 1 说明文档 Version 1.2 ######################################## 注意:本开发包欢迎转载,但是请完整保留该文档及开发包目录结构,谢谢! 【一.开发包组成】 jquery-easyui-1.5.2 │ ├demo:easyui普通网页演示页面代码库(可以从中参考很多组件的用法,是个非常好用的demo库。) │ ├demo-mobile:easyui手机端网页演示页面代码库(可以从中参考很多组件的用法,是个非常好用的demo库。) │ ├docs:easyui中文API文档【PDF、EXE和CHM版】(该文档系本人原创翻译制作。) │ ├extension:easyui第三方插件库(里面会收录官方提供以及第三方提供的各类优秀插件,每个插件的用法最终都会体现到API文档当中。) │ ├locale:easyui国际化资源文件库(需要用到国际化的时候就需要在页面中引用该包路径下的文件。) │ ├plugins:easyui核心功能组件分解后的独立插件库(需要配合easyloader.js一起使用。) │ ├src:easyui部分非核心组件的源代码库(核心大组件的源代码并未公布,比如datagrid、combo和tree等。) │ ├themes:easyui的皮肤库(皮肤库中会收录所有网上能找得到的皮肤,所以大家不用再去自己乱搜了。) │ ├changelog.txt:easyui版本官方更新日志文件[英文版](该文件内容可以参考API当中的更新说明。) │ ├easyloader.js:easyui组件加载器(easyui提供了2种组件加载方式,这就是其中一种,当使用该方式的时候可以不必引入jquery.easyui.min.js文件,具体用法请参看api文档。) │ ├jquery.easyui.min.js:easyui的完整组件包文件(当使用了该文件的时候就可以不必引入easyloader.js文件,具体用法请参考官方demo或api文档。) │ ├jquery.min.js:jQuery框架库文件,该版本的jQuery库提供的是最新的1.11.1版,能够支持IE6、7、8。 │ ├licence_gpl.txt:GNU开源协议文档。 │ └readme.txt:官方的说明,主要告诉你你可以购买商业版来获得完整源代码以及官方的支持。 【二.开发包说明】   本开发包是为了方便大家日常开发使用的,特别是在离线或断网环境下可以以最快、最便捷的方式找到自己需要的东西。由于本包是发布的第一个版本,所以东西固然会不全面,在后续版本中会逐步加入并完善,以解决大家的后顾之忧。如果你也有什么好的扩展可以推荐给大家的话,大家可以用邮件的形式将扩展以及相关的API说明发送给我,我会在测试确认之后打包到下一个版本的扩展库中。我的邮箱是:richie696@163.com 【三.版本说明】   本开发包的大版本更新将会同步EasyUI版本更新,当在同一个easyui版本中间有2次或者更多更新版本的时候,会更改开发包的build版本,比如首个版本是jquery-easyui-EDT-1.5.2-build1,那第二个版本就是jquery-easyui-EDT-1.5.2-build2,以此类推。每次更新都会附上详细的更新说明。 【四.其它杂谈】   另外,建议Javascript基础不是太好的同学去找些书籍看看,书籍有很多,不过我只看过Javascript高级编程,现在应该已经出到第三版了,个人感觉挺好的,有需要的同学可以度娘一下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值