struts 使用多個資源束

來源:互聯網
上載者:User

你可能想要將你的應用資源分解到多個檔案中,以改善應用的組織和維護性,特別是在團隊開發的環境中。

動作要領

建立單獨的屬性檔案並且在struts-config.xml中為每一個檔案聲明一個message-resources元素。

<message-resources
  parameter="com.oreilly.strutsckbk.MessageResources"/>
<message-resources 
  parameter="com.oreilly.strutsckbk.LabelResources"
  key="labels">
</message-resources>
<message-resources 
  parameter="com.oreilly.strutsckbk.HeaderResources"
  key="headers">
</message-resources>

 

動作變化

Struts 使用訊息資源來提供對錯誤訊息、欄位標註、以及其他靜態文本的儲存機制。對於預設的Struts
實現,你可以將訊息儲存為屬性檔案(.properties檔案)中的名稱(關鍵字)/值對。訊息資源集基本上相當於Java
ResourceBundle(資源束)。

你可以將你的訊息資源束性檔案通過message-resources元素來配置。元素的parameter屬性指示了屬性檔案的相對於
classpath的名稱。你可以通過將檔案路徑中的分隔字元替換為點號,以及刪除檔案名稱中的.properties副檔名來產生這個屬性的值。比如,如果
你的屬性檔案位於/WEB-
INF/classes/com/oreilly/strutsckbk/MessageResources.properties,你可以將訊息資源元
素設定為:

<message-resources
  parameter="com.oreilly.strutsckbk.MessageResources"/>

在應用啟動時, Struts將建立訊息資源的運行時表達(一個對象執行個體),然後將其儲存在servlet context中。

你並不限於只使用一個訊息資源。然而,和使用多Struts設定檔不同,如果你使用多個訊息資源檔,它們並不時合并成一個檔案。相反,你需要定
義訊息資源的不同的集合。每一個集合使用一個key屬性指定的唯一的值來標識。如果這個屬性沒被使用,那麼該訊息資源就會被設定為預設的訊息集。只有一個
預設訊息集存在。同時,只有一個訊息資源集對應於同一模組中的每一個唯一關鍵字。如果你使用同一關鍵字定義了多個訊息資源束,則最後一個指定的將被使用。

key屬性的值是作為servlet context
屬性的名稱,從屬性檔案建立的訊息資源束就儲存在它之下。key值被用在Struts標籤之中,比如bean:message,來標識訊息資源集,並引用
到來自於屬性檔案的資源束。下面是你可以如何從labels訊息資源來訪問一個訊息的方法:

<bean:message bundle="labels" key="label.url"/>

bundle屬性的值對應於struts-config.xml檔案中的message-resources元素的key屬性。bean:
message標籤也有一個key屬性,但它和message-resources元素的key屬性的含義完全不同。它指定一個特定的屬性來訪問訊息資源
中的訊息。

不幸的是,這種在XML元素和JSP標籤中使用同一個屬性名稱的方法在Struts中很普遍。所以必須仔細研究和注意Struts taglib文檔 (http://jakarta.apache.org/struts/userGuide/index.html) 以及Struts 的配置文檔(http://jakarta.apache.org/struts/userGuide/configuration.html#struts-config) ,免得搞混淆了。

Struts 並不關心你如何分解你的訊息資源屬性檔案。一種辦法是按照訊息類型分解。比如,你可以將你的訊息資源分解為下面的幾組:

  • 錯誤訊息
  • 提示性訊息
  • 欄位標註
  • 表頭單元個文本

雖然這樣分解訊息資源是合乎邏輯和合理的,但在團隊環境中則傾向於按照功能進行分解。比如,考慮一個人力資源應用,它有薪酬、福利和管理功能區。你
可以為每一個功能區建立一個訊息資源屬性檔案。每一個屬性檔案都包含該功能區域所特定的錯誤訊息、提示訊息、欄位標註和其他資訊。如果你的Team Dev是按照
這些業務功能區進行分組的,按照相同的分組原則對訊息資源進行分組則更加合理。相同的方法和原則也適用於Struts 設定檔的分解。

如果你熟悉Struts module,上述的每一個功能區都是一個很好的Struts
module的候選。如果你使用module,那麼你在struts-config檔案中為某一個模組所定義的訊息資源就僅適用於該模組。事實上,你可以
在不同的模組中定義具有相同key屬性的message-resource元素。回想一下, Struts
是使用key值將MessageResources儲存在servlet
context中。更準確地說,實際的值將用於模組名稱(通常引用為模組的首碼),以及訊息資源的key屬性值的串聯。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.