Struts2資源檔尋找順序

來源:互聯網
上載者:User

http://www.blogjava.net/max/archive/2006/11/01/78536.html

Struts 2.0的國際化更靈活是因為它可以能根據不同需要配置和擷取資源(properties)檔案。在Struts 2.0中有下面幾種方法:

  1. 使用全域的資源檔,方法如上例所示。這適用於遍佈於整個應用程式的國際化字串,它們在不同的包(package)中被引用,如一些比較共用的出錯提示;
  2. 使用包範圍內的資源檔。做法是在包的根目錄下建立名的package.properties和package_xx_XX.properties檔案。這就適用於在包中不同類訪問的資源;
  3. 使用Action範圍的資源檔。做法為Action的包下建立檔案名稱(除副檔名外)與Action類名同樣的資源檔。它只能在該Action中訪問。如此一來,我們就可以在不同的Action裡使用相同的properties名表示不同的值。例如,在ActonOne中title為“動作一”,而同樣用title在ActionTwo表示“動作二”,節省一些命名工夫;
  4. 使用<s:i18n>標誌訪問特定路徑的properties檔案。使用方法請參考我早前的文章《常用的Struts 2.0的標誌(Tag)介紹》。在您使用這一方法時,請注意<s:i18n>標誌的範圍。在<s:i18n name="xxxxx">到</s:i18n>之間,所有的國際化字串都會在名為xxxxx資源檔尋找,如果找不到,Struts 2.0就會輸出預設值(國際化字串的名字)。

上面列舉了四種配置和訪問資源的方法,它們的範圍分別是從大到小,而Struts 2.0在尋找國際化字串所遵循的是特定的順序,3所示:


圖3 資源檔尋找順序圖

假設我們在某個ChildAction中調用了getText("user.title"),Struts 2.0的將會執行以下的操作:

  1. 尋找ChildAction_xx_XX.properties檔案或ChildAction.properties;
  2. 尋找ChildAction實現的介面,尋找與介面同名的資源檔MyInterface.properties;
  3. 尋找ChildAction的父類ParentAction的properties檔案,檔案名稱為ParentAction.properties;
  4. 判斷當前ChildAction是否實現介面ModelDriven。如果是,調用getModel()獲得對象,尋找與其同名的資源檔;
  5. 尋找當前包下的package.properties檔案;
  6. 尋找當前包的父包,直到最頂層包;
  7. 在值棧(Value Stack)中,尋找名為user的屬性,轉到user類型同名的資源檔,尋找鍵為title的資源;
  8. 尋找在struts.properties配置的預設的資源檔,參考例1;
  9. 輸出user.title。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.