Struts從1.1版本開始支持把應用程序分為多個模塊,每個模塊可以看作獨立的應用程序,在帶來方便的同時,我也發現了一些問題。比如有一個struts應用程序分了大約十個模塊,現在有以下問題不知道大家一般是怎么解決的:

          1、因為要進行驗證,所以在每個模塊對應的資源文件里都要有“errors.required={0} is required.”等資源,有沒有只用在一個文件里定義的方法?


          2、用tiles的時候,要在每個模塊對應的tiles-defs.xml里定義幾乎相同的definition,有沒有只用在一個文件里定義的方法?(我試過在缺省模塊里定義一個definition,然后在模塊里extends它,但不行,extends似乎只找當前模塊)


          3、使用ExceptionHandler的時候,為什么在exception標簽里指定了bundle屬性還是只在當前模塊里找資源?我希望把一些重復使用的異常處理聲明在一個文件里,例如NotLoginException、NoSuchObjectException等等,并且它們對應的key也指向同一個資源文件里的資源(利用bundle屬性),怎么實現?


          經過一段時間的摸索,第一個和第三個問題基本上解決了,其實它們可以看作同一類問題,就是資源的問題。在struts-config-xxx.xml里定義資源文件時,可以指定一個factory屬性,不指定時使用缺省的“org.apache.struts.util.PropertyMessageResourcesFactory”類。我的解決方法是自定義一個CustomMessageResourcesFactory類,將多個資源文件以逗號分隔的形式作為參數(即message-resources的parameter屬性)傳給它,在需要資源的地方會遍歷它們進行查找。同時還要自定義一個CustomMessageResources類,它的getMessage()方法里是查找資源的關鍵代碼,而factory只是解析逗號分隔的參數構造并返回CustomMessageResources實例。


          CustomMessageResourcesFactory的代碼比較簡單,如下所示:



          package eg;

          import java.util.Arrays;

          import org.apache.struts.util.MessageResources;
          import org.apache.struts.util.MessageResourcesFactory;

          public class CustomMessageResourcesFactory extends MessageResourcesFactory{

              public MessageResources createResources(String config) {
                  
                  return new CustomMessageResources(Arrays.asList(config.split(",")));
              }

          }
           

           


          CustomMessageResources就稍微復雜一些,不過很幸運,我在網上找到了一個完全符合自己要求的類,下載地址在

          <message-resources factory="eg.CustomMessageResourcesFactory" 
              parameter="eg.ApplicationResources,eg.ErrorResources" />
           

           


          上面參考了這篇文章

          posted on 2008-01-04 13:35 LifeNote 閱讀(1059) 評論(0)  編輯  收藏 所屬分類: JavaHibernateSpringstruts
           
          主站蜘蛛池模板: 南华县| 鄯善县| 台南县| 张家界市| 玉屏| 乌拉特中旗| 遂川县| 宜黄县| 石狮市| 忻州市| 临潭县| 兰考县| 平陆县| 石棉县| 福州市| 平谷区| 信宜市| 安塞县| 云和县| 元阳县| 阜阳市| 蒙阴县| 思南县| 永吉县| 东山县| 济宁市| 雅安市| 威远县| 渝北区| 三亚市| 梁平县| 中牟县| 铅山县| 建阳市| 凌海市| 宁蒗| 波密县| 玉林市| 珲春市| 高尔夫| 恩平市|