Struts從1.1版本開始支持把應(yīng)用程序分為多個(gè)模塊,每個(gè)模塊可以看作獨(dú)立的應(yīng)用程序,在帶來(lái)方便的同時(shí),我也發(fā)現(xiàn)了一些問(wèn)題。比如有一個(gè)struts應(yīng)用程序分了大約十個(gè)模塊,現(xiàn)在有以下問(wèn)題不知道大家一般是怎么解決的:

          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)單,如下所示:



          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就稍微復(fù)雜一些,不過(guò)很幸運(yùn),我在網(wǎng)上找到了一個(gè)完全符合自己要求的類,下載地址在

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

           


          上面參考了這篇文章

          posted on 2008-01-04 13:35 LifeNote 閱讀(1064) 評(píng)論(0)  編輯  收藏 所屬分類: JavaHibernateSpringstruts
           
          主站蜘蛛池模板: 南雄市| 镇雄县| 乃东县| 正蓝旗| 秀山| 双流县| 芮城县| 邹城市| 紫阳县| 五寨县| 旺苍县| 南涧| 鄂温| 柳河县| 溧水县| 长岭县| 奈曼旗| 吉安市| 武平县| 巨鹿县| 富川| 镇安县| 安仁县| 商都县| 泾源县| 合山市| 宁武县| 工布江达县| 闸北区| 万州区| 响水县| 万盛区| 文水县| 定陶县| 荃湾区| 东辽县| 城固县| 共和县| 勐海县| 中西区| 芜湖市|