概述
struts2框架在以下方面支持国际化(i18n):
l UI标签
l 来源于ValidationAware接口的消息和错误(ActionSupport、ValidationAwareSupport实现了该接口)
l 通过动作类的getText()方法获得的文本内容(动作类继承了ActionSupport)
绑定消息的搜索顺序
1. 动作类的属性文件。该文件名与动作类的名字一样且存放在同一个包中。例如:某动作类为train.struts2.actions.SomeAction,它的默认属性文件就是/WEB-INF/classes/train/struts2/actions/SomeAction.properties。
2. 动作类所实现的各个接口(含间接实现的接口)的属性文件。例如SomeAction实现了接口SomeInterface,那么其对应的属性文件就是SomeInterface.properties。如果第1步中未找到对应的key,则会在此处进行搜索。
3. 动作类所继承的父类(含间接父类)的属性文件。如果在第2步中还未找到,则会搜索其父类的属性文件并上溯到java.lang.Object。
4. 如果动作类实现了com.opensymphony.xwork2.ModelDriven接口,则搜寻其模型对象且按照从第1步开始的搜索顺序。
5. 包属性文件。如果前面还没有找到,则搜索包里的默认属性文件(含其父包中的属性文件),该文件名为package.properties。
6. ??
7. 全局资源文件。
访问消息资源文件
我们可以通过在标签中使用getText方法、text标签、i18n标签等形式访问资源文件。
使用getText方法
<s:property value=”getText(‘some.key’)”/>
使用text标签
第一种:<s:text name=”some,key”/>
如果some.key没有找到,则显示“some.key”;若找到则显示其对应的值。
第二种:<s:text name=”some,key”>
默认值
</s:text>
如果some.key没有找到,则显示“默认值”;若找到则显示其对应的值。
使用i18n标签
<s:i18n name="StudentAction">
<s:text name="student.name"></s:text>
</s:i18n>
使用UI标签中的key属性
<s:textfield name="name" key="student.name"></s:textfield>