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
           
          主站蜘蛛池模板: 云霄县| 赤壁市| 广汉市| 深州市| 同江市| 霍城县| 五寨县| 潼南县| 浙江省| 内江市| 论坛| 宝山区| 诏安县| 德昌县| 英德市| 仁怀市| 平顶山市| 穆棱市| 无为县| 鞍山市| 台东市| 麻江县| 长岛县| 闻喜县| 秦安县| 永定县| 乐东| 永州市| 刚察县| 晋城| 登封市| 达尔| 教育| 天长市| 新乡市| 桑植县| 德格县| 聂拉木县| 前郭尔| 宁蒗| 姚安县|