struts国际化
来源:互联网 发布:mac app如何打包成dmg 编辑:程序博客网 时间:2024/06/03 12:55
首先在struts.properties文件中加入以下内容:
- struts.custom.i18n.resources=messageResource
或在struts.xml中加入
- <constantname="struts.custom.i18n.resources" value="messageResource"></constant>
资源文件的命名格式: 名称_语言代码_国家代码.Properties
如果创建中文和英语国际化,那么资源文件名称为
messageResource_zh_CN.properties和messageResource_en_US.properties
国际化资源文件分为三种级别
(1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
(2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
(3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码
查找顺序为从小范围到大范围, Action级优先级最大
jsp页面的国际化
通过使用标签<s:textname="label.helloWorld"/>输出国际化,label.helloWorld为资源文件中定义的key。
在messageResource_en_US.properties加入以下内容
- label.hello=hello{0}
- label.helloWorld=hello,world
在messageResource_zh_CN.properties加入以下内容
- label.hello=你好 {0}
- label.helloWorld=你好,世界
(1).
- <s:textname="label.helloWorld"/>
- <s:propertyvalue="%{getText('label.helloWorld')}"/>
上面两个都为输出一个hello word的两种表示
- <s:textfieldname="name" key="label.helloWorld"/>
- <s:textfieldname="name" label="%{getText('label.helloWorld')}"/>
显示一个文本框,文本框的标题进行国际化
(2). 使用<s:i18n>标签指定从某个特定的资源文件中取数据
- <s:textfieldname="name" key="label.helloWorld"/>
- <s:textfieldname="name" label="%{getText('label.helloWorld')}"/>
指定在从messageResource取资源
(3).
- <s:textfieldname="name" key="label.helloWorld"/>
- <s:textfieldname="name" label="%{getText('label.helloWorld')}"/>
使用带参数的资源.<s:param>可以替换label.hello=hello{0}中的{0}
Action的国际化
Action的国际化主要是通过getText(Stringkey)方法实现的
Java代码
- public String execute() throws Exception {
- //getText(String) string为key
- String str1 =getText("label.helloWorld");
- System.out.println(str1);
- // 带参数的
- String str2 =getText("label.hello",new String[]{"clf"});
- System.out.println(str2);
- // 与上一种实现一样
- List l = newArrayList();
- l.add("callan");
- String str3 =getText("label.hello",l);
- System.out.println(str3);
- returnSUCCESS;
- }
action错误的国际化
在message_en_US.properties中增加以下内容
- username.invalid=usernameinvalid...
在message_zh_CN.properties中增加以下内容
- username.invalid=\u7528\u6237\u540d\u4e0d\u5408\u6cd5...
修改RegisterAction中的validate方法,将错误加到ActionError中,在这里将使用到ActionSupport中的getText方法获得和国际化资源文件相关的信息。
以username验证为例:
- if (null ==username || username.length() <5 || username.length() > 10) {
- this.addActionError(this.getText("username.invalid"));
- }
这样就从资源文件中读取username.invalid的值,增加到ActionError中。
验证框架的国际化(field级别错误)
在message_en_US.properties文件中增加以下内容
- username.xml.invalid=validateinformation
在message_zh_CN.properties文件中增加以下内容
- username.xml.invalid=\u9a8c\u8bc1\u6846\u67b6\u4fe1\u606f
然后修改验证框架,需要将在properties文件中的内容增加到框架中。
以username为例
- <fieldname="username">
- <field-validatortype="requiredstring">
- <paramname="trim">true</param>
- <messagekey="username.xml.invalid"></message>
- </field-validator>
- </field>
在message标签中增加属性key,值为properties文件中的key
标签中key大多是和国际化相关的
0 0
- struts国际化
- Struts国际化
- struts 国际化
- struts国际化
- Struts国际化
- struts国际化
- struts国际化
- Struts国际化
- struts国际化
- struts国际化
- struts 国际化
- struts国际化
- Struts国际化
- struts国际化
- struts国际化
- Struts---国际化
- Struts国际化
- struts国际化
- MySQL主从同步的坑
- STM32时钟配置方法详解
- ConcurrentHashMap<K,V>
- ActionContext和ServletActionContext介绍
- Add Binary
- struts国际化
- C语言localtime()函数:获取当前时间和日期并转换为本地时间
- 贪心算法最简单的硬币找钱问题
- iOS基础知识:类目、延展
- 为什么MyEclipse的Console输出中文为乱码?
- iOS navigationcontroller pop 回到上一层视图 如何刷新
- Struts 2之配置文件
- 使用ntp从时间同步服务器更新centos系统时间的方法
- JavaScript事件冒泡简介及应用