隨筆-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
          主站蜘蛛池模板: 南平市| 翁源县| 保康县| 弥勒县| 泸水县| 寿阳县| 溧水县| 柳江县| 永宁县| 西乌珠穆沁旗| 宁蒗| 历史| 苍溪县| 绵竹市| 南汇区| 集贤县| 阿克陶县| 阿图什市| 洛宁县| 嘉荫县| 新田县| 赤城县| 邹平县| 盐池县| 界首市| 涪陵区| 邳州市| 资中县| 山丹县| 朝阳市| 怀化市| 米脂县| 大化| 正定县| 博客| 本溪| 丽江市| 嘉禾县| 蒙城县| 棋牌| 宁蒗|