Struts2中action错误的国际化
在action类的validate方法中,对ActonError错误提示进行国际化,其中getText是ActionSupport类中的方法。
public void validate() { List list = new ArrayList(); list.add(username); if(null == username || username.equals("") || username.length() < 6){ //传入资源文件的KEY this.addActionError(this.getText("username.invalid",list)); //或可以使用数据,如下,推荐使用数据,效果和用List一样 // this.addActionError(this.getText("username.invalid",new String[]{username})); } }
message_en_US.properties
username.invalid = username "{0}" invalid
message_zh_CN.properties
username.invalid = \u7528\u6237\u540d "{0}" \u4e0d\u6b63\u786e
register.jsp
<tr> <td style="color:red"><s:actionerror></s:actionerror></td> </tr>
<s:actionerror>标签用于接收actionerror类型的错误。
当将IE的默认语言设为英文时, 提示语言将用英文,如username "abc" invalid
当将IE的默认语言设为中文时, 提示语言将用中文,如用户名 "abc" 不正确
Struts2的资源文件包括包级别和类级别
包级别资源文件的名称格式为:package_en_US.properties,它建立在具体的某个包目录下,当如果全局资源文件与包级资源文件存在相同名称KEY时,则优先取包级别资源文件中的条目。
类级别资源文件的名称格式为:类名_en_US.properties,它也必须与该类在同一个包中,当如果包级别资源文件与类级别资源文件存在相同名称KEY时,则优先取类级别资源文件中的条目。
最后还可以通过Struts2的标签<s:i18n/>来指定某个资源文件,来实现国际化
以下temp即为src目录下的temp_xx_XX.properties资源文件
<s:i18n name="temp"> <s:text name="hello"></s:text> </s:i18n>