JSP 2.x 自定義標簽

n672 9年前發布 | 22K 次閱讀 JSP Java開發

JSP 1.x的標簽,雖然使用起來非常靈活,但是比較復雜,JSP 2.x提供了一組簡化的標簽寫法


SimpleTagSupport是SimpleTag接口的子類,同時支持參數和標簽體,最核心的方法時doTage

public AddTag extends SimpleTagSupport{
      private int num1;
      private int num2;

      public void doTag() throws JspException,IOException{
             this.getJspContext.getOut().write("兩數相加等于:"+(num1+num2));
      }
      //省略setter、getter方法
}
 


同樣是實現了計算兩數之和的功能,配置與JSP1.x 一樣

JSP 1.x的標簽體是通過setBodyContent注入到BodyTag,通過getBodyContent取出來的。而SimpleTag是通過一種叫jspFragment的對象實例實現的

//此標簽用于將字符轉換成大寫
public void doTag() throws JspException,IOException{

             StringWriter writer = newStringWriter();
             JspFragment jspFragment = this.getJspBody();

//通過invoke輸出到指定的writer中,如果參數為空,則輸出到默認的writer, //即getJspContext().getOut()

             jspFragment.invoke(writer);
             String content =writer.getBuffer().toString();
             this.getJspContext().getOut().print(content.toUpperCase());
      }

 


配置如下


<tag>
      <name>tagname</name>
      <tagclass>com.chen.tags.TagTest</tagclass>
      <bodycontent>tagdependent</bodycontent >
      <info>tag information</info>
</tag>


這里的<bodycontent>只能是tagdependent,而不能是JSP或者bodycontent

與JSP 1.x不同的是,JSP 2.x標簽可以有多個標簽體,并且可以按照不同順序,不同的次數分別調用標簽體,多個標簽體需要借助JSP的<jsp:attribute>,而且在tld配置的時候,必須配合為fragment類型


<attribute>
             <name>body1</name>
             <required>false</ required>
             <fragment>true</fragment >
</attribute>


 本文由用戶 n672 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!