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> 信息的尾部代码
相关推荐
- `<message-resources>`:配置国际化资源文件。 - `<plug-in>`:配置插件支持。 这些元素的详细配置方式和应用场景将在后续的文章中进一步探讨。 #### 五、总结 通过本文的详细介绍,我们可以看出`struts-config...
8. **国际化与本地化**:Struts支持多语言环境,通过资源文件实现文本的国际化和本地化。 9. **异常处理**:Struts提供了全局的异常处理机制,可以在`struts-config.xml`中配置错误和异常的映射,以统一处理程序...
在Struts 2.0框架中,国际化的处理得到了显著的增强,这使得开发者能够更加灵活和高效地构建多语言支持的应用程序。本文将详细解析Struts 2.0中国际化处理的关键知识点,包括其核心概念、实现步骤以及一些实用技巧。...
Struts2支持国际化,可以为不同的语言创建不同的资源文件,用于显示错误消息。通过在配置文件中指定资源包,我们可以使错误信息根据用户的语言环境自动转换。 7、总结 Struts2作为MVC框架,提供了丰富的功能和灵活...
根据提供的文件信息,本文将围绕“Struts2学习心得”这一主题进行展开,重点解析Struits2框架中的国际化(i18n)功能及其在实际项目中的应用方式,并结合具体的代码示例进行深入探讨。 ### Struts2简介 Struts2是...
第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 ...
- **国际化支持**:Struts 2提供了强大的国际化支持,可以通过资源文件实现多语言界面。 #### 5. Struts 2的实际应用 - **表单处理**:Struts 2提供了丰富的标签库来简化表单的生成和验证。 - **异常处理**:可以...
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.4 Struts中文问题“,”struts国际化问题”??终极解决方案** - 探讨了如何解决Struts框架中的中文乱码问题和国际化需求。 - **3.5 为Web服务构建Struts应用程序** - 讲述了如何利用Struts框架来构建Web...
#### 12.7 小结 本章主要介绍了如何使用MyEclipse开发Struts2+Spring应用。通过一系列的实际操作,不仅学习了Struts2的基本用法,还了解了如何将其与Spring框架进行整合。通过这些示例,开发者可以更加深入地理解这...
6. **国际化和本地化**:Struts支持多语言,你可以创建资源文件(如messages.properties)来存储消息,然后在JSP中通过`<bean:message>`标签显示。 7. **拦截器(Interceptors)**:Struts 2引入了拦截器,可以增强...
#### 五、小结 Struts2作为一个成熟的Web应用框架,在企业级项目中有着广泛的应用。通过本教程的学习,读者不仅能够深入了解MVC架构模式,还能掌握如何利用Struts2构建高效稳定的Web应用程序。希望读者能够通过本...
- Struts 提供了一套完整的解决方案,包括表单处理、国际化支持等功能,极大地简化了 Web 应用的开发工作。 **2.7 小结** - 本章总结了 Struts 框架的设计理念、核心架构以及其实现细节,为读者进一步深入学习...
#### 12.7 小结 通过本章的学习,我们不仅掌握了Struts2的基本开发流程,还深入了解了其与Spring框架的整合应用,以及如何处理文件上传下载、表单验证等关键问题。Struts2与Spring的结合,无疑为Java Web开发提供了...
#### 七、小结 通过上述介绍可以看出,Struts2 框架为开发者提供了一套完善的解决方案,包括表单处理、数据验证、异常处理、国际化等重要功能,大大降低了 Web 开发的复杂度,提高了开发效率。对于希望使用 Java ...