国际化(i18n)
国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。
随着全球经济的一体化,软件开发者应该开发出支持多国语言、国际化的Web应用。对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果。
国际化文件的命名规则:
1、基本名.properties 如:message.properties
2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties
其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。
对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件。命令的使用方式如下:
native2ascii 源文件.properties 目标文件.properties
Java中已经实现了国际化功能,struts2中只是对该功能进行了整合,以方便我们的使用。
Struts2中使用到国际化的地方有:
1、jsp页面的国际化;
2、Action信息国际化;
3、转换错误信息的国际化;
4、校验错误信息的国际化;
Struts2国际化文件分类:
1、全局范围国际化文件
2、包范围国际化文件
3、Action类范围国际化文件
全局范围国际化文件
在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件,如下:
<constant name="struts.custom.i18n.resources" value="message" />
其中message为资源文件的基本名
在src文件下建立message_zh_CN.properties文件
username=用户名
包范围国际化文件
在一个大型应用中,整个应用有大量的内容需要实现国际化,如果我们把国际化的内容都放置在全局资源属性文件中,显然会导致资源文件变的过于庞大、臃肿,不便于维护,这个时候我们可以针对不同模块,使用包范围来组织国际化文件。
在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。
Action类范围国际化文件
当一些显示数据只会被某个action使用,这时候我们可以把这些显示数据定义在只能被该action访问的Action范围资源文件中。
为某个action指定资源文件,方法如下:
在Action类所在的路径,放置ActionClassName_language_country.properties资源文件,ActionClassName为action类的简单名称。
如果三篇文件都存在,执行顺序:
当查找指定key的消息时,系统会先从最小的Action类范围国际化文件中寻找;
如果没有找到对应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包;
如果还没有找到对应的key,最后会从常量struts.custom.i18n.resources指定的全局资源文件中寻找。
转换错误信息的国际化
在全局国际化文件中添加:
xwork.default.invalid.fieldvalue={0}错误信息
在Action范围内国际化文件中添加:
invalid.fieldvalue.字段名=专用错误信息
校验错误信息的国际化
<field name="username">
<field-validator type="requiredstring">
<message key="error.required"></message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">8</param>
<message key="error.length></message>
</field-validator>
如果要传参—国际化文件中书写:
国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。
随着全球经济的一体化,软件开发者应该开发出支持多国语言、国际化的Web应用。对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果。
国际化文件的命名规则:
1、基本名.properties 如:message.properties
2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties
其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。
对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件。命令的使用方式如下:
native2ascii 源文件.properties 目标文件.properties
Java中已经实现了国际化功能,struts2中只是对该功能进行了整合,以方便我们的使用。
Struts2中使用到国际化的地方有:
1、jsp页面的国际化;
2、Action信息国际化;
3、转换错误信息的国际化;
4、校验错误信息的国际化;
Struts2国际化文件分类:
1、全局范围国际化文件
2、包范围国际化文件
3、Action类范围国际化文件
全局范围国际化文件
在struts.xml中通过struts.custom.i18n.resources常量把资源文件定义为全局资源文件,如下:
<constant name="struts.custom.i18n.resources" value="message" />
其中message为资源文件的基本名
在src文件下建立message_zh_CN.properties文件
username=用户名
包范围国际化文件
在一个大型应用中,整个应用有大量的内容需要实现国际化,如果我们把国际化的内容都放置在全局资源属性文件中,显然会导致资源文件变的过于庞大、臃肿,不便于维护,这个时候我们可以针对不同模块,使用包范围来组织国际化文件。
在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。
Action类范围国际化文件
当一些显示数据只会被某个action使用,这时候我们可以把这些显示数据定义在只能被该action访问的Action范围资源文件中。
为某个action指定资源文件,方法如下:
在Action类所在的路径,放置ActionClassName_language_country.properties资源文件,ActionClassName为action类的简单名称。
如果三篇文件都存在,执行顺序:
当查找指定key的消息时,系统会先从最小的Action类范围国际化文件中寻找;
如果没有找到对应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包;
如果还没有找到对应的key,最后会从常量struts.custom.i18n.resources指定的全局资源文件中寻找。
转换错误信息的国际化
在全局国际化文件中添加:
xwork.default.invalid.fieldvalue={0}错误信息
在Action范围内国际化文件中添加:
invalid.fieldvalue.字段名=专用错误信息
校验错误信息的国际化
<field name="username">
<field-validator type="requiredstring">
<message key="error.required"></message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">8</param>
<message key="error.length></message>
</field-validator>
如果要传参—国际化文件中书写:
error.length=The length of ${getText(fieldName)} should be in ${minLength} and ${maxLength} charactors!
文件上传
1、确认lib包中有: commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar
2、确认页面form表单上的提交方式为POST,enctype属性的值为“multipart/form-data”
3、在Action类中添加以下属性,
public class HelloWorldAction{
private File uploadImage;//得到上传的文件
private String uploadImageContentType;//得到文件的类型
private String uploadImageFileName;//得到文件的名称
public String execute(){
//基本I/O操作步骤即可
}
}
本文详细介绍了Struts2框架中的国际化配置方法,包括不同层级的国际化文件设置、错误信息的国际化处理以及如何进行文件上传操作等内容。
1356

被折叠的 条评论
为什么被折叠?



