struts 国际化资源文件的分成两类:
1.全局的国际化资源文件
默认加载的:org/apache/struts2/struts-messages
配置加载的 struts.xml中配置:
<constant name="struts.custom.i18n.resources" value="类路径下资源文件名1,类路径下资源文件名2...."></constant>
2.Action类对应的资源文件
在Action_validation中指定的message的key ,需要通过key查找对应的信息
在jsp页面 国际化标签中指定的key,需要通过key查找对应的信息
那么从哪个国际化资源文件中查询呢?
如UserAction类,国际化资源文件查找顺序:
如com.app.UserAction类,国际化资源文件查找顺序:
1.UserAction.class.getName()+Locale
2.UserAction直接实现的接口Class +Locale
3.UserAction 父类Class+Locale
4.UserAction 父类 直接实现的接口Class+Locale
重复 3-4 直接到Object为止
5.如果Action 实现了ModelDriven,则获取 Action.getModel() 对应的国际化资源文件(重复1--4)x
6.Action所在的包名生成资源文件名“com.app.package”+Locale,没有找到则查上一级包名
7. 如果 key中有“.” ,如 user.userId,则获取Action.getUser() 对应的国际化资源文件(重复1--4)(key变成了userId)
8. 如果仍没有找到则到默认的国际化资源文件查找。
类LocalizedTextUtil 实现了以上功能。