隨筆-57  評論-202  文章-17  trackbacks-0
                續上一篇隨筆,struts1.2的源代碼和struts1.1的源代碼有些不同,struts1.1的eoncode方法是用的RequestUtils.encodeURL(String s)處理的,指定用UTF-8進行encoding。所以我的修改有些不同。
                從struts的網站上下載1.1的源代碼:http://apache.justdn.org/jakarta/struts/source/jakarta-struts-1.1-src.zip,解壓到本地目錄。打開文件jakarta-struts-1.1-src\src\share\org\apache\struts\taglib\bean\WriteTag.java,新增一個布爾屬性encode,表示是否需要用UTF-8編碼輸出字符串。代碼片斷如下:

              /**
               * The encode flag for the value.
               * Added by George Hill, 05/19/2005
               
          */

              
          protected boolean encode = false;
              
              
          public boolean isEncode() {
                  
          return (this.encode);
              }

              
              
          public void setEncode(boolean encode) {
                  
          this.encode = encode;
              }

                修改方法formatValue,把這段:


                  
          // Return String object as is.
                  if ( value instanceof java.lang.String ) {
                          
          return (String)value;
                  }
           else {

                  }


                替換成:


                  
          // Return String object as is.
                  if ( value instanceof java.lang.String ) {
                      
          if (encode)
                          
          return RequestUtils.encodeURL((String)value);
                      
          else
                          
          return (String)value;
                  }
           else {

                  }


                保存修改后的文件。然后需要修改文件jakarta-struts-1.1-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:


              
          <attribute>
                
          <name>encode</name>
                
          <required>false</required>
                
          <rtexprvalue>true</rtexprvalue>
                
          <info>
                
          <p>Added by George Hill, specifies the value need UTF-8 encode or not.</p>
                
          </info>
                
          <default>false</default>
              
          </attribute>

                然后修改一下ant的編譯配置文件build.xml,這一部分和上一篇的隨筆類似,請參考上篇隨筆:<<用URLEncoder輸出<bean:write />的值>>
                運行ant,編譯后的jar文件保存在jakarta-struts-1.1-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。
          posted on 2005-05-20 11:52 小米 閱讀(1057) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 肇庆市| 香港| 岐山县| 诏安县| 饶河县| 高台县| 庆云县| 赤水市| 青龙| 浦东新区| 樟树市| 仪陇县| 宣威市| 长治县| 宁夏| 江达县| 永登县| 黄陵县| 凤城市| 喀喇| 绵阳市| 莱芜市| 日照市| 馆陶县| 台江县| 繁昌县| 古浪县| 开化县| 扎囊县| 舞阳县| 大兴区| 广饶县| 宣化县| 长乐市| 筠连县| 聂拉木县| 滦南县| 七台河市| 北海市| 增城市| 天峻县|