i18n资源文件及标签的使用
先来说说资源文件,一般小型项目的资源文件一个就可以了,所以可以在webwork.xml文件中这样设置:
webwork.custom.i18n.resources=main
然后在“WEB-INF/classes/”目录中建立一个“main.properties”资源文件即可。这里要注意的是如果资源文件中包含中文字符串的时候是不能正常显示在视图中的,一般的解决办法是用jdk自带的“native2ascii”程序把文件中的中文字符串转换为uxxxx16进制的 utf-8编码才可以。
如果每个Action想要独立的使用一个资源文件,可以在“WEB-INF/classes/package/.../”建立一个相应的“ActionName.properties”的资源文件即可(和“ActionName.class”在同一个目录下)。
搞定了资源文件后,接着要在视图中使用它,只需要用“getText('key.name')”,如“<webwork:property value="getText('key.name')">”像这样即可。
一些常用的标签:
1、<webwork:property />
输出一个属性的值,如:<webwork:property value="user" />,这会调用Action的“getUser()”方法,该访问返回的值就是输出的结果。<webwork:property value="page.title" escape="true"/>会调用Action的“getPage().getTitle()”方法,“escape”表示对htlm的字符串进行编码,相当于php的“htmlspecialchars()”函数,设置为“true”时有用,默认为“false”。
2、<webwork:param />
为父标签设置参数,如:
---------------
<webwork:bean name="net.cnzxh.test" id="test">
<webwork:param name="paramName" value="paramValue">
</webwork:bean>
---------------
3、<webwork:set />
设置一个变量,该变量可以在jsp中使用,如“<webwork:property value="#newVar">”或“<c:out value="newVar" />”,例:
---------------
<webwork:set name="name" value="xianhua.zhou" scope="request">
<c:out value="name" escapeXml="true"/>
<br/>
<webwork:set name="name2" value="zhouxh" scope="webwork">
<webwork:property value="#name2">
输出:
xianhuz.zhou
zhouxh
---------------
该标签的“scope”可选范围有:page、request、session、application、stack、webwork
4、<webwork:action />
执行其它的Action,并可返回结果,如:
---------------
<webwork:action name="database" id="dbinfo">
<webwork:param name="db" value="mysql" />
</webwork>
<webwork:property name="#dbinfo.maxConnections" />
<webwork:property name="#dbinfo.startupTimes" />
---------------
5、<webwork:push />
增加一个对象至栈的顶部,如:
---------------
<webwork:set name="list" value="{'', 'two', 'three'}"/>
<webwork:push value="list">
<webwork:property value="'top'" />
</webwork:pust>
最后的list值为:
['top', 'two', 'three']
---------------
6、<webwork:bean />
建立一个bean的实例以便使用它,和“<jsp:useBean />”的标签有点类似,如:
---------------
<webwork:bean name="'net.cnzxh.bean'" id="obj">
<webwork:param name="'message'" value="'set some text... to message.'" />
</webwork>
<webwork:property value="#obj.result" />
---------------
上面建立了“net.cnzxh.bean”类的一个实例并以“obj”命名以便引用它,接着用“<webwork:param />”标签调用其方法“setMessage(String message)”,传递了相应的值,最后使用“<webwork:property />”标签输出结果,调用了“obj.getResult()”方法
7、<webwork:include />
包含一个页面至当前页面中,可以是静态页面也可以是动态的页面,如:
---------------
<webwork:include page="'test.jsp'" />
或者
<webwork:include page="'test.action'" />
---------------
8、<webwork:if />、<webwork:elseif />、<webwork:else />
一些逻辑判断语句,如:
---------------
<webwork:set name="num" value="1" />
<webwork:if test="#num == 1">
num = 1
</webwork:if>
<webwork:elseif test="#num == 2">
num = 2
</webwork:elseif>
<webwork:else>
unknow num
</webwork:else>
---------------
注意:假如判断的是字符串的话需要这样“test="#var == 'some message'"”,值要用单引号“'”引起来才可以,数字或布尔型的数据不需要。
[color=red][/color]
先来说说资源文件,一般小型项目的资源文件一个就可以了,所以可以在webwork.xml文件中这样设置:
webwork.custom.i18n.resources=main
然后在“WEB-INF/classes/”目录中建立一个“main.properties”资源文件即可。这里要注意的是如果资源文件中包含中文字符串的时候是不能正常显示在视图中的,一般的解决办法是用jdk自带的“native2ascii”程序把文件中的中文字符串转换为uxxxx16进制的 utf-8编码才可以。
如果每个Action想要独立的使用一个资源文件,可以在“WEB-INF/classes/package/.../”建立一个相应的“ActionName.properties”的资源文件即可(和“ActionName.class”在同一个目录下)。
搞定了资源文件后,接着要在视图中使用它,只需要用“getText('key.name')”,如“<webwork:property value="getText('key.name')">”像这样即可。
一些常用的标签:
1、<webwork:property />
输出一个属性的值,如:<webwork:property value="user" />,这会调用Action的“getUser()”方法,该访问返回的值就是输出的结果。<webwork:property value="page.title" escape="true"/>会调用Action的“getPage().getTitle()”方法,“escape”表示对htlm的字符串进行编码,相当于php的“htmlspecialchars()”函数,设置为“true”时有用,默认为“false”。
2、<webwork:param />
为父标签设置参数,如:
---------------
<webwork:bean name="net.cnzxh.test" id="test">
<webwork:param name="paramName" value="paramValue">
</webwork:bean>
---------------
3、<webwork:set />
设置一个变量,该变量可以在jsp中使用,如“<webwork:property value="#newVar">”或“<c:out value="newVar" />”,例:
---------------
<webwork:set name="name" value="xianhua.zhou" scope="request">
<c:out value="name" escapeXml="true"/>
<br/>
<webwork:set name="name2" value="zhouxh" scope="webwork">
<webwork:property value="#name2">
输出:
xianhuz.zhou
zhouxh
---------------
该标签的“scope”可选范围有:page、request、session、application、stack、webwork
4、<webwork:action />
执行其它的Action,并可返回结果,如:
---------------
<webwork:action name="database" id="dbinfo">
<webwork:param name="db" value="mysql" />
</webwork>
<webwork:property name="#dbinfo.maxConnections" />
<webwork:property name="#dbinfo.startupTimes" />
---------------
5、<webwork:push />
增加一个对象至栈的顶部,如:
---------------
<webwork:set name="list" value="{'', 'two', 'three'}"/>
<webwork:push value="list">
<webwork:property value="'top'" />
</webwork:pust>
最后的list值为:
['top', 'two', 'three']
---------------
6、<webwork:bean />
建立一个bean的实例以便使用它,和“<jsp:useBean />”的标签有点类似,如:
---------------
<webwork:bean name="'net.cnzxh.bean'" id="obj">
<webwork:param name="'message'" value="'set some text... to message.'" />
</webwork>
<webwork:property value="#obj.result" />
---------------
上面建立了“net.cnzxh.bean”类的一个实例并以“obj”命名以便引用它,接着用“<webwork:param />”标签调用其方法“setMessage(String message)”,传递了相应的值,最后使用“<webwork:property />”标签输出结果,调用了“obj.getResult()”方法
7、<webwork:include />
包含一个页面至当前页面中,可以是静态页面也可以是动态的页面,如:
---------------
<webwork:include page="'test.jsp'" />
或者
<webwork:include page="'test.action'" />
---------------
8、<webwork:if />、<webwork:elseif />、<webwork:else />
一些逻辑判断语句,如:
---------------
<webwork:set name="num" value="1" />
<webwork:if test="#num == 1">
num = 1
</webwork:if>
<webwork:elseif test="#num == 2">
num = 2
</webwork:elseif>
<webwork:else>
unknow num
</webwork:else>
---------------
注意:假如判断的是字符串的话需要这样“test="#var == 'some message'"”,值要用单引号“'”引起来才可以,数字或布尔型的数据不需要。
[color=red][/color]