emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          公告

          常用鏈接

          留言簿(92)

          隨筆分類(20)

          隨筆檔案(171)

          文章分類(89)

          文章檔案(103)

          相冊

          收藏夾(46)

          友情連接

          收藏

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          struts 的radio標記的增強

          寫struts的html標記的人不知道是不是對html標記不熟,寫出來的標記怎么怪里怪氣的,id標記被用來綁定bean了,我還以為不支持html的id屬性了,不小心看到org.apache.struts.taglib.html.BaseHandlerTag的prepareStyles()方法里面,居然赫然寫著:
                  if (styleId != null) {
                      styles.append(" id=\"");
                      styles.append(getStyleId());
                      styles.append("\"");
                  }
          原來要用styleId屬性來定義html的id屬性,不看源碼你敢這么猜嗎,怎么看styleId都象是個樣式有關的屬性嘛,要定義html的id屬性,如果不能用id至少也應該叫HTMLID或者tagId之類的名字嘛。ok,源碼都看了,那我們用styleId也成,可是看看radio標記就實在是笨了:
              public int doAfterBody() throws JspException {
                  if (this.bodyContent != null) {
                      String value = this.bodyContent.getString().trim();
                      if (value.length() > 0) {
                          this.text = value;
                      }
                  }
                  return (SKIP_BODY);
              }
          你說我把文字括到<html:radio>text</html:radio>標記中間為的是什么?當然這個文字要和radio綁定啦。可是上面的代碼居然直接把文字往生成的<input type="radio"...>標記后面一丟了事,有這么不負責的嘛?
          還好咱java和html都還懂一點。自己寫個類:
          package com.reuse.common.web.tag;
          import javax.servlet.jsp.JspException;
          public class RadioTag extends org.apache.struts.taglib.html.RadioTag{
            public int doAfterBody() throws JspException {
              if (this.bodyContent != null) {
                  String value = this.bodyContent.getString().trim();
                  if (value.length() > 0) {
                      this.text = "<label for=\""+getStyleId()+"\" "+
                          prepareEventHandlers()+
                          prepareStyles().replaceAll(" id=\""+getStyleId()+"\"","")+
                          ">"+value+"</label>";
                  }
              }
              super.setStyleId(null);
              return (SKIP_BODY);
            }
            static int idCount=0;
            public int doStartTag() throws JspException {
              if (super.getStyleId() == null){
                super.setStyleId("RadioTag_"+ ++idCount);
               }
              return super.doStartTag();
            }
          }
          然后再在WEB-INF下面找到struts-html.tld,把
          <tagclass>org.apache.struts.taglib.html.RadioTag</tagclass>
          改為
          <tagclass>myPackage.RadioTag</tagclass>

          這下整個世界都清涼多了。回家過五一了,下次再對checkbox開刀吧


          struts 的checkbox標記的增強

          五一過完,checkbox也開了刀了:

          package com.reuse.common.web.tag;

          import javax.servlet.jsp.JspException;
          public class CheckboxTag
              extends org.apache.struts.taglib.html.CheckboxTag
          {
            public int doAfterBody() throws JspException {
            if (this.bodyContent != null) {
                String value = this.bodyContent.getString().trim();
                if (value.length() > 0) {
                    this.text = "<label for=\""+getStyleId()+"\" "+
                        prepareEventHandlers()+
                        prepareStyles().replaceAll(" id=\""+getStyleId()+"\"","")+
                        ">"+value+"</label>";
                }
            }
            super.setStyleId(null);
            return (SKIP_BODY);
          }
          static int idCount=0;
          public int doStartTag() throws JspException {
            if (super.getStyleId() == null){
              super.setStyleId("CheckBoxTag_"+ ++idCount);
             }
            return super.doStartTag();
          }

          }

          posted on 2005-05-18 14:20 emu 閱讀(1534) 評論(2)  編輯  收藏 所屬分類: java技術

          評論

          # re: struts 的radio和checkbox標記的增強 2005-10-21 14:00 wzy
          現在我都放棄了struts 的標簽 鬼理鬼氣的
          用velocity   回復  更多評論
            

          # re: struts 的radio和checkbox標記的增強 2006-01-11 03:47 寒暮云
          痛苦中......  回復  更多評論
            

          主站蜘蛛池模板: 汽车| 类乌齐县| 华容县| 永仁县| 荣昌县| 射阳县| 凤庆县| 白沙| 将乐县| 桂东县| 巫溪县| 岳阳市| 资中县| 城口县| 青神县| 南阳市| 鹰潭市| 莆田市| 磐安县| 宜兰县| 锦屏县| 缙云县| 曲阳县| 理塘县| 黄梅县| 锡林郭勒盟| 永吉县| 马边| 内黄县| 浑源县| 龙海市| 千阳县| 苏尼特右旗| 永胜县| 循化| 宁德市| 长垣县| 仪陇县| 浦县| 岳池县| 苍梧县|