包範圍資源檔
在一個大型應用中,整個應用有大量的內容需要實現國際化,如果我們把國際化的內容都放置在全域資源屬性檔案中,顯然會導致資源檔變的過於龐大、臃腫,不便於維護,這個時候我們可以針對不同模組,使用包範圍來組織國際化檔案。
方法如下:
在java的包下放置package_language_country.properties資源檔,package為固定寫法,處於該包及子包下的action都可以訪問該資源。當尋找指定key的訊息時,系統會先從package資源檔尋找,當找不到對應的key時,才會從常量struts.custom.i18n.resources指定的資源檔中尋找。
Action範圍資源檔
我們也可以為某個action單獨指定資源檔,方法如下:
在Action類所在的路徑,放置ActionClassName_language_country.properties資源檔,ActionClassName為action類的簡單名稱。
當尋找指定key的訊息時,系統會先從ActionClassName_language_country.properties資源檔尋找,如果沒有找到對應的key,然後沿著當前包往上尋找基本名為package 的資源檔,一直找到最頂層包。如果還沒有找到對應的key,最後會從常量struts.custom.i18n.resources指定的資源檔中尋找。
JSP中直接存取某個資源檔struts2為我們提供了<s:i18n>標籤,使用<s:i18n>標籤我們可以在類路徑下直接從某個資源檔中擷取國際化資料,而無需任何配置:<s:i18n name="jim"> <s:text name=“welcome”/></s:i18n>jim為類路徑下資源檔的基本名。 如果要訪問的資源檔在類路徑的某個包下,可以這樣訪問:<s:i18n name=“com/jim/action/package"> <s:text name="welcome"> <s:param>小張</s:param> </s:text></s:i18n>上面訪問com.jim.action包下基本名為package的資源檔。 要訪問Action範圍的資源檔也是一樣的 com/jim/action/ActionClassName就OK了