隨筆-57  評論-202  文章-17  trackbacks-0
                續(xù)上一篇隨筆,struts1.2的源代碼和struts1.1的源代碼有些不同,struts1.1的eoncode方法是用的RequestUtils.encodeURL(String s)處理的,指定用UTF-8進(jìn)行encoding。所以我的修改有些不同。
                從struts的網(wǎng)站上下載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編譯時(shí)會變成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 />的值>>
                運(yùn)行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
          主站蜘蛛池模板: 昭通市| 广灵县| 扶风县| 巴彦淖尔市| 华蓥市| 东方市| 密云县| 武山县| 建宁县| 沙洋县| 华安县| 井研县| 宕昌县| 保亭| 大关县| 堆龙德庆县| 邯郸市| 余庆县| 什邡市| 淮阳县| 浦江县| 塔河县| 高雄县| 黄冈市| 大石桥市| 甘谷县| 乌兰浩特市| 太谷县| 察隅县| 河间市| 双牌县| 石楼县| 太湖县| 株洲市| 大理市| 本溪市| 黑河市| 云浮市| 连州市| 万安县| 同江市|