Struts2資源包使用示例
要使用資源包從屬性文件檢索消息,必須了解Struts2的資源包搜索順序:
資源包搜索順序
資源包中搜索按以下順序:
- ActionClass.properties
- Interface.properties
- BaseClass.properties
- ModelDriven’s model
- package.properties
-
搜索國際化消息鍵的層次結構本身
-
全局資源屬性
請參閱Struts2資源包文檔詳細解釋。
在實踐中,是不可能組織屬性的文件的順序。所以,隻要了解幾個常用的搜索順序應該是足夠了: package.properties 和 global resource properties。參見下圖:
如果com.yiibai.user.action.LoginAction想通過資源包獲得消息,它將搜索
- com.yiibai.user.action.LoginAction.properties (找到,退出,否則下一個)
- com.yiibai.user.action.package.properties (找到,退出,否則下一個)
-
com.yiibai.user.package.properties (找到,退出,否則下一個)
…一路不斷在每個父目錄的根目錄查找package.properties - 查找全局資源屬性,如果將其配置在應用程序中。
明白這搜索順序可以給你更多的信心來決定正確的文件夾的屬性文件。
獲取資源包
下麵是訪問該資源包的幾個例子:
P.S ‘username.required‘ 和 ‘username‘ 在一個屬性文件中的鍵。
1. 動作類
在Action類,可以擴展了ActionSupport和通過getText(‘key’) 函數獲取資源包。
... public class LoginAction extends ActionSupport{ ... public void validate(){ if("".equals(getUsername())){ addFieldError("username", getText("username.required")); } } }
2. <s:property>標簽
在屬性標記,使用 getText(‘key’).
<s:property value="getText('username')" />
3. <s:text>標簽
在text標簽,設置“name”屬性的鍵。
<s:text name="username" />
4. Key屬性
UI組件的主要屬性有特殊的功能,查看這個key屬性例子詳細信息。
<s:textfield key="username" />
5. I18n標簽
國際化i18n 標簽可以從“name”屬性聲明指定資源包得到消息。在這個例子中,它要求從com/yiibai/user/package.properties文件中以獲得 “username” 的消息。
<s:i18n name="com.yiibai.user.package" > <s:text name="username" /> </s:i18n>
下載完整的項目實踐(struts2resourcebundle) – http://pan.baidu.com/s/1dD2UQ2l