Struts2資源包使用範例


要使用資源包從屬性檔案檢索訊息,必須了解Struts2的資源包搜尋順序:


資源包搜尋順序

資源包中搜尋按以下順序:
  1. ActionClass.properties
  2. Interface.properties
  3. BaseClass.properties
  4. ModelDriven’s model
  5. package.properties
  6. 搜尋國際化訊息鍵的層次結構本身
  7. 全域性資源屬性
請參閱Struts2資源包文件詳細解釋。

在實踐中,是不可能組織屬性的檔案的順序。所以,只要了解幾個常用的搜尋順序應該是足夠了: package.properties 和 global resource properties。參見下圖:

如果com.yiibai.user.action.LoginAction想通過資源包獲得訊息,它將搜尋
  1. com.yiibai.user.action.LoginAction.properties (找到,退出,否則下一個)
  2. com.yiibai.user.action.package.properties (找到,退出,否則下一個)
  3. com.yiibai.user.package.properties (找到,退出,否則下一個)
    …一路不斷在每個父目錄的根目錄查詢package.properties
  4. 查詢全域性資源屬性,如果將其組態在應用程式中。
明白這搜尋順序可以給你更多的信心來決定正確的檔案夾的屬性檔案。

獲取資源包

下面是存取該資源包的幾個例子:

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