Struts2的国际化

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>

 

 

 

 

 

猜你喜欢

转载自betterthisworld.iteye.com/blog/2087826