国际化资源文件
全局资源文件:
WEB-INF/classes路径下
baseName.properties,baseName可自定义
包范围资源文件:包的根路径下package.properties,baseName必须是package
Action范围资源文件:Action类文件所在目录下ActionName.properties,baseName为相应ActionName
对于不一样语言和地区的资源文件,命名方式为
baseName_<language>.properties或
baseName_<language>_<local>.properties,如baseName_en.properties,baseName_en_US.properties,baseName_zh.properties,baseName_zh_CN.properties等
全局国际化资源
在struts.properties文件中配置常量
struts.custom.i18n.resources=<baseName>
临时指定资源文件
在JSP中<s:i18n name=""></s:i18n>之间的子标签使用临时指定的资源文件,其中name属性的值为临时指定的资源文件的baseName
输出国际化消息
在JSP页面中输出国际化消息,可使用Struts2的标签<s:text name="" />,其中name属性对应资源文件中的key
在表单元素的Label里输出国际化消息,能够为该表单标签的key属性赋值,对应资源文件中的key
在Action类中访问国际化消息,可使用ActionSupport类的getText方法,该方法接受一个name参数,对应资源文件中的key
输出带占位符的国际化消息
在JSP页面中输出带占位符的国际化消息,能够经过在<s:text />标签中使用多个<s:param />标签来依次填充消息中的占位符
在Action类中访问带占位符的国际化消息,能够调用getText(String key, List<?> args)或getText(String key, String[] args)方法填充消息中的占位符,其中参数args是一个字符串组成的List或字符串数组,其中元素依次填充到国际化消息的占位符中
此外,经过在国际化消息中使用OGNL做为占位符,能够直接访问值栈,将对应的值填充到国际化消息中
资源文件的加载顺序 在Action类中访问资源文件的顺序: 1.优先加载相同路径下baseName为ActionName的资源文件; 2.若是找不到指定的key,则查找超类路径下baseName为超类ActionName的资源文件; 3.若是找不到指定的key,则查找所实现接口路径下baseName为接口类名的资源文件; 4.若是找不到指定的key,且Action使用模型驱动模式,则对getModel()方法返回的model对象从第一步开始执行; 5.若是找不到指定的key,则加载当前包下的包范围资源文件; 6.若是找不到指定的key,则沿当前包上溯查找包范围资源文件,直到最顶层包; 7.若是找不到指定的key,则查找全局资源文件 在JSP中访问资源文件的顺序: 1.对于临时指定资源文件的标签,优先查找临时指定的资源文件; 2.在全局资源文件中查找指定的key; 3.若是找不到指定的key,则直接输出该key