Struts2的国际化: (建立在java国际化基础之上)
mess_zh_CN.properties:(该文件应放在类加载路径下)
loginPage=登录页面
succTip=欢迎您已经登录
login=登录
加载全局资源文件:
struts.xml:
<constant name="struts.custom.i18n.resources" value="messageResource"/>
(通过这种方式加载国际化资源文件后,Struts2应用就可以在所有地方使用了,包括JSP和Action)
访问国际化消息:
>JSP中:<s:text../>该标签可指定一个name属性,该属性指定了国际化资源文件中的key
<s:text name="loginPage"/>
>Action中:可使用ActionSupport类的getText()方法,该方法可接受一个name参数,该参数指定了国际化
资源文件中的key
getText("succTip");
>表单元素中的Label中:可以为该表单指定一个key属性,该key属性指定了国际化资源文件中的key
<s:submit key="login"/>
输出带占位符的国际化消息:
>JSP中:可通过在<s:text../>标签中使用多个<s:param../>标签来填充占位符,第一个<s:param../>填充第一个,第二个填充第二个
>Action中:可通过getText(String aTextName , List args)或getText(String key , String[] args),第一个元素填充第一个占位符,第二个填充第二个
对占位符的替代方式:
failTip=${username},对不起,您不能登录
Action中:ctx.put("tip" , getText("succTip"));
JSP中: <s:text name="succTip"/>
加载资源文件的方式:
包范围: (包范围会优先于全局资源文件)
package_zh_CN.properties:
failTip=包范围消息:对不起,您不能登录
succTip=包范围消息:欢迎,您已经登录
(将该资源文件保存在WEB-INF/classes/app路径下,该资源文件就可以被位于app包及其子包下所有Action访问了)
Action范围:(Action范围优先于包范围资源文件)
在Action类文件所在路径下建立名为ActionName_language_country.properties
LoginAction_zh_CN.properties:
failTip=Action范围消息:对不起,您不能登录
succTip=Action范围消息:欢迎,您已经登录
临时指定资源文件:
><s:i18n../>标签作为<s:text../>标签的父标签,则<s:text../>将会直接加载<s:i18n../>指定的资源文件
<s:i18n name="mess"> <s:text name="loginPage"/> </s:i18n>
><s:i18n../>标签作为表单标签的父标签,则表单标签key属性将会从<i18n../>指定资源文件加载消息
<s:i18n name="mess"> <s:form action="Login"> ... <s:submit key="login"/> </s:form> </s:i18n>