<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    emu in blogjava

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

    2005-5-14


    struts 的radio標記的增強

    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-16 18:52 emu 閱讀(268) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品国产污污免费网站入口在线| 国产V亚洲V天堂无码久久久| 亚洲国产成AV人天堂无码| 99久久99这里只有免费的精品| 亚洲一区AV无码少妇电影☆| 一本久久A久久免费精品不卡 | 亚洲国产一区二区a毛片| 日韩精品无码专区免费播放| 亚洲精品亚洲人成在线麻豆| 无码专区永久免费AV网站| 日本亚洲精品色婷婷在线影院| 免费无码黄网站在线观看| 国产亚洲美女精品久久| 亚洲情侣偷拍精品| 久久精品国产免费一区| 亚洲免费视频播放| 亚洲黄色在线播放| 国产91久久久久久久免费| 一级毛片在线播放免费| 国产成人亚洲精品蜜芽影院| 亚洲人成在线播放| 久久久久亚洲AV无码麻豆| 日本高清免费不卡在线| 日韩免费高清播放器| 亚洲视频一区二区三区四区| 亚洲老熟女@TubeumTV| 日本久久久久亚洲中字幕| 久久丫精品国产亚洲av| 久久综合日韩亚洲精品色| 日本特黄特黄刺激大片免费| 日韩高清在线免费观看| 免费精品一区二区三区在线观看| 女人被男人桶得好爽免费视频| 无套内谢孕妇毛片免费看看| 久久久影院亚洲精品| 国产成人综合久久精品免费| 免费一级不卡毛片| 久久久久久久岛国免费播放| 国产精品亚洲综合| 日本高清不卡中文字幕免费| 一级做受视频免费是看美女|