Struts1国际化小结
一、java中的国际化
a) jave中实现国际化的原理
java中通过Locale对象可以指定或得到当前系统的默认国际化配置及语言代码和国家代码,然后通过ResourceBundle类得到对应Lacale对象的国际化配置文件即Properties文件,通过读取键的值实现国际化。
b) java中实现国际化需要的类
locale类:
可以指定所要显示的语言,即对应的国际化文件
Locale类的方法:
//得到当前系统默认的编码
Locale l=Locale.getDefault();
//自定义Locale
//参数1:语言编码en(英文) zh(中文) ja(日本)
//参数2;国家编码US(英国) CN(中国)JP(日本)
Locale l1=new Locale("en","US");
//得到国家代码
l.getCountry();
//得到语言代码
l.getLanguage();
ResourceBundle类:
可以读取相应的Locale 对应的property文件
c) 更改系统默认的国际化编码
控制面板—语言区域
d) 在IE中修改默认的编码
IE首选项—语言
e) property文件的文件名编写规则
Basename名_语言代码_国家代码.properties
说明: BaseName名可以自定义但后面的名称必须按以上规则书写
f) 读取对应的Properties文件
//读取对应的Properties文件
//第一个参数对应相应的basename
//第二个参数对应相应的Locale
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
rb.getString("key值");
g) Properties文件的中文乱码问题
在读取Properties文件时键对应的中文键值会出现乱码应使用jdk的native2ascii.exe 工具将中文转换成unicode码再写入Properties文件中
h) Native2ascii .exe的使用方法
在jdk的bin目录下双击native2ascii.exe 将需要转换的中文copy到该命令提示行下 回车即可看到转换的unicode编码将其替换对应键的值即可
Eg:
将a=你好
替换成 a= \uf60\u597d
批量替换
Native2ascii.exe 源文件路径 替换文件路径
系统会自动根据控制面板设置的国际化编码进行转换。
i) Properties 文件的占位符问题
Properties 文件中可以使用{0}{1}进行占位符设置注意是从0位开始
使用占位符
MessageFormat mf =new MessageFormat(rb.getString("键名"));
String result = mf.format(new Object[]{"a","b"});
j) 国际化文件的路径问题
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
默认读取的是src下的文件,若路径不同应标明路径
方法:msg + . + Properties文件的BaseName名
Eg: msg.Message
k) 注意:
默认情况下ResourceBundle会根据参数Locale的国家代码和语言代码自动匹配相应的Properties文件进行读取(所以properties文件的命名必须合法)。
若没有找到相应文件则加载系统默认的国际化配置文件(读取系统设置的国家代码和语言代码)若系统的设置也没有与之对应的properties文件则加载Basename名.properties文件。若还没有对应文件则报错。
l) 注意2:新建java项目进行测试时必须建立源src文件夹否则报错。
二、 Struts硬编码国际化
a) Stuts硬编码国际化即对页面中不变的文字进行国际化处理。
b) 使用方法
i. 在struts-config.xml:文件中加入
<message-resources parameter="MessageResources" />
第一个参数及Properties文件BaseName的名称
ii. 在properties文件中配置相关的字段,注意中文要转换成unicode码
iii. 在页面中用Struts标签替换需要国际化的内容
<bean:message key=” ”>
c) 注意:加载国际化文件时若没有找得相关文件(IE中的国际化配置)则会根据操作系统的语言配置进行查找若还没有会加载默认文件即 Basename.properties文件。
d) 通过修改session 实现手动修改语言
request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
第二个参数为自定义的Locale对象。
或者:
this.setLocale(request, currentLocale);
第二个参数为自定义的Locale对象
三、 动态文本国际化
1、 方法
在action中定义普通信息和错误信息
ActionMessage m=new ActionMessage("upass",new Object[]{"pppp"});
第一个参数是该信息的key值,第二个参数是占位符的内容,若仅有一个占位符可以不用object数组
直接写成String类型的参数
ActionMessage m=new ActionMessage("upass",”sss”);
2、 分别定义普通信息和错误信息的ActionMessages
ActionMessages messages=new ActionMessages();
3、 将普通信息和错误信息分别放入相应的messages中
Messages.add("uu",m3);
第一个参数为信息的名称,第二个参数为定义的ActionMessage
4、 将普通信息存入
this.saveMessages(request,messages);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
5、 将错误信息存入
this.saveErrors(request, messages2);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
6、 读取普通信息
<html:messages id="s" message="true">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
<hr>
<html:messages id="s" message="true" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息。
Property表示从该信息集合中取出名为此属性值的元素的集合。
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
7、 读取错误信息
<html:messages id="s" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message标签默认读取的是错误信息。
<html:errors property="uu"/><br>
解析:该标签可以读取所有错误信息也可根据property读出所有是该属性名的错误信息的集合。
8、 错误信息的格式定义
定义在国际化的Properties文件中
Eg:
errors.header=<UL> 信息的头部代码
errors.prefix=<LI><font color="red"> 每条信息的开头代码
errors.suffix=</font></LI>每条信息的结尾代码
errors.footer=</UL> 信息的尾部代码
相关推荐
第11章 理解国际化 240 11.1 Struts 2框架和Java i18n 241 11.1.1 使用ResourceBundle和Locale取得本地化文本 241 11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts ...
9.2 Struts中的国际化支持 185 9.3 text标签 188 9.4 i18n标签 191 9.5 以手动方式选择一个资源包 193 9.6 小结 195 第10章 Model Driven和Preparable拦截器 196 10.1 把动作与模型隔离开 196 10.2 Model ...
一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
3.3Struts-config.xml配置文件讲解 3.4struts中文问题","struts国际化问题"??终极解决方案 9 3.5为 Web 服务构建 Struts 应用程序 9 3.6Struts标记库是如何工作的 9 3.7Struts 9 3.8struts简单例子的分析(含代码...
2.5.3 自定义国际化struts 2校验错误消息 92 2.5.4 struts 2的自带校验器 92 2.6 struts 2的拦截器 94 2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100...
第22章 用户登录模块(struts 2.x+guice+国际化) 22.1 用户登录概述 22.2 关于用户登录的基础知识——国际化资源 22.3 关于用户登录的基础知识——guice框架 22.4 用户登录的具体实现 22.5 小结 ...
1.2. 小结.......................................................................................................................36 2. 深入 STRUTS架构.....................................................
程序设计教程.pdf>>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 ...本章小结 342
1.2. 小结.......................................................................................................................36 2. 深入STRUTS 架构......................................................
12.2.5 Struts 2.0中的国际化编程 221 12.2.6 创建基于POJO的Action 223 12.3 Spring整合Struts 2.0框架 224 12.4 Struts 2.0应用实例:登录系统 227 12.5 本章小结 231 第13章 JPA的开发与应用 232 13.1 JPA规范...
除了对JAVA EE Web编程基本技术的讲解淙外,还针对Web应用开发中如打印、图表、日志、上传、下载和国际化等常见功能特性的实现,综合运用多种JAVA EE开发技术,提出多种解决方案,并深入讲座分析,对开发人员动手...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...
11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...
11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...