隨筆-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 小米 閱讀(1048) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 齐齐哈尔市| 凉城县| 贵定县| 望谟县| 桐庐县| 广宁县| 巴楚县| 忻城县| 常宁市| 寿阳县| 土默特右旗| 广平县| 德惠市| 武宣县| SHOW| 灵川县| 宁夏| 岗巴县| 樟树市| 景宁| 大连市| 南岸区| 雷波县| 阳曲县| 甘南县| 钦州市| 惠东县| 南宁市| 澄迈县| 江达县| 昆明市| 隆昌县| 咸丰县| 衡阳市| 宁津县| 黄骅市| 桑日县| 厦门市| 图片| 南康市| 闽侯县|