在Struts2,在UI组件的“key”属性来处理本地化的常用方法,也是编码UI标签的一个非常有效的方式。见下面两种情况:
1. Properties属性文件
属性文件包含一条消息。
global.properties
global.username = Username
2. 示例1
如果分配一个“key”属性到一个文本框。键(key)属性会从资源包中获取信息,并使其在默认XHTML text.tfl模板基础上渲染。
<s:form action="validateUser"> <s:textfield key="global.username" /> </s:form>
现在它将会使用“global.username {left-side}”和 “Username {right-side}”,并匹配相应的XHTML text.tfl模板。
<td class="tdLabel"> <label for="validateUser_{left-side}" class="label">{right-side}:</label> </td> <td> <input type="text" name="{left-side}" value="" id="validateUser_{left-side}"/> </td>
最后的 HTML
<td class="tdLabel"> <label for="validateUser_global_username" class="label">Username:</label> </td> <td> <input type="text" name="global.username" value="" id="validateUser_global_username"/> </td>
键属性将使用 {left-side}作为文本框名称和ID; {right-side} 作为标签值。
3. 示例2
在某些情况下,可能需要显式声明的一个不同的名称的文本框。
<s:form action="validateUser"> <s:textfield key="global.username" name="username"/> </s:form>
现在key属性将使用“Username {right-side}”来只匹配的标签值, 文本框的名称和ID将明确覆盖。
最后的 HTML
<td class="tdLabel"> <label for="validateUser_username" class="label">Username:</label> </td> <td> <input type="text" name="username" value="" id="validateUser_username"/> </td>
key属性可以提高你的开发速度,使代码更有效,这是值得学习的。