1、因?yàn)橐M(jìn)行驗(yàn)證,所以在每個(gè)模塊對(duì)應(yīng)的資源文件里都要有“errors.required={0} is required.”等資源,有沒(méi)有只用在一個(gè)文件里定義的方法?
2、用tiles的時(shí)候,要在每個(gè)模塊對(duì)應(yīng)的tiles-defs.xml里定義幾乎相同的definition,有沒(méi)有只用在一個(gè)文件里定義的方法?(我試過(guò)在缺省模塊里定義一個(gè)definition,然后在模塊里extends它,但不行,extends似乎只找當(dāng)前模塊)
3、使用ExceptionHandler的時(shí)候,為什么在exception標(biāo)簽里指定了bundle屬性還是只在當(dāng)前模塊里找資源?我希望把一些重復(fù)使用的異常處理聲明在一個(gè)文件里,例如NotLoginException、NoSuchObjectException等等,并且它們對(duì)應(yīng)的key也指向同一個(gè)資源文件里的資源(利用bundle屬性),怎么實(shí)現(xiàn)?
經(jīng)過(guò)一段時(shí)間的摸索,第一個(gè)和第三個(gè)問(wèn)題基本上解決了,其實(shí)它們可以看作同一類問(wèn)題,就是資源的問(wèn)題。在struts-config-xxx.xml里定義資源文件時(shí),可以指定一個(gè)factory屬性,不指定時(shí)使用缺省的“org.apache.struts.util.PropertyMessageResourcesFactory”類。我的解決方法是自定義一個(gè)CustomMessageResourcesFactory類,將多個(gè)資源文件以逗號(hào)分隔的形式作為參數(shù)(即message-resources的parameter屬性)傳給它,在需要資源的地方會(huì)遍歷它們進(jìn)行查找。同時(shí)還要自定義一個(gè)CustomMessageResources類,它的getMessage()方法里是查找資源的關(guān)鍵代碼,而factory只是解析逗號(hào)分隔的參數(shù)構(gòu)造并返回CustomMessageResources實(shí)例。
CustomMessageResourcesFactory的代碼比較簡(jiǎn)單,如下所示:
CustomMessageResources就稍微復(fù)雜一些,不過(guò)很幸運(yùn),我在網(wǎng)上找到了一個(gè)完全符合自己要求的類,下載地址在 上面參考了這篇文章
<message-resources factory="eg.CustomMessageResourcesFactory"
parameter="eg.ApplicationResources,eg.ErrorResources" />
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
|
||
相關(guān)文章:
|
||