自定義實現struts2中的國際化機制

2021-06-05 08:06:12 字數 1301 閱讀 1335

最近一段時間,一直在研究struts2中的國際化實現方案.

對於struts2中標籤的國際化中,key值的搜尋順序如下:

假設我們在某個childaction中呼叫了gettext("user.title"),struts 2.0的將會執行以下的操作:

(1)優先載入系統中儲存在childaction的類檔案相同位置,且basename為childaction的系列資源檔案。

(2)如果在(1)中找不到指定key對應的訊息,且childaction有父類parentaction,則載入系統中儲存在parentaction的類檔案相同位置,且

basename為parentaction的系列資源檔案。

(3)如果在(2)中找不到指定key對應的訊息,且childaction有實現介面ichildaction,則載入系統中儲存在ichildaction的類檔案相同位置,且

basename為ichildaction的系列資源檔案。

(4)如果在(3)中找不到指定key對應的訊息,且childaction有實現介面modeldriven(即使用模型驅動模式),則對於getmodel()方法返回的model物件,

重新執行第(1)步操作。

(5)如果在(4)中找不到指定key對應的訊息,則查詢當前包下basename為package的系列資源檔案。

(6)如果在(5)中找不到指定key對應的訊息,則沿著當前包上溯,直到最頂層包來查詢basename為package的系列資源檔案。

(7)如果在(6)中找不到指定key對應的訊息,則查詢struts.custom.i18n.resources常量指定basename的系列資源檔案。

(8)如果經過上面的步驟一直找不到key對應的訊息,將直接輸出該key的字串值。

後來我自定義了標籤後,也想實現類似的功能.結果找來找去,

基本上很難實現struts標籤中gettext("user.title")或

的查詢方式.

再後來,參考了開源控制項extremecomponents專案的**,再加上ec-ext.jar中的部分**,才找到解決方案.

廢話不說了,先曬**:

/*** * 訪問資源檔案的方法

* @author zhangpf

* */

public class resourceutil while(!(o instanceof textprovider));

textprovider = (textprovider)o; }

/*** 該方法適合用在jsp的標籤實現類中

* 此方法尋找屬性檔案的順序和路徑與一般的struts2標籤中的用法一樣.比如

Struts2 自定義標籤

在用struts2寫自定義標籤時遇到了一些問題,說了乙個多小時解決了,嗯就在這裡做個備忘吧 第一次寫,呵呵,有點怕出錯,如果說的不好大家不要笑.呵呵 說明一下我的環境 eclipse tomcat 自定義標籤編寫分為以下幾步 1.編寫uibean strutstag description my e...

struts2自定義標籤

在用struts2寫自定義標籤時遇到了一些問題,說了乙個多小時解決了,嗯就在這裡做個備忘吧 第一次寫,呵呵,有點怕出錯,如果說的不好大家不要笑.呵呵 說明一下我的環境 eclipse tomcat 自定義標籤編寫分為以下幾步 1.編寫uibean strutstag description my e...

Struts2自定義標籤重寫

struts2自定義標籤類重寫主要就是重寫dostarttag 和doendtag 方法。tagsupport的學習 1 tagsupport與bodytagsupport的區別 tagsupport與bodytagsupport的區別主要是標籤處理類是否需要與標籤體互動,如果不需要互動的就用tag...