自定义jsp标签


创建标签库描述文件(tld,添加自定义标签的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
 3 <tlib-version>1.0</tlib-version>
 4 <jsp-version>1.2</jsp-version>
 5 <short-name>Simple Tags</short-name>
 6 <uri>/Zking</uri>
 7 
 8 <!-- 自定义标签 -->
 9 <tag>
10 <name>h</name>
11 <tag-class>com.zking.HTag</tag-class>
12 <body-content>JSP</body-content>
13 <attribute>
14     <name>str</name>
15    <required>false</required>
16     <rtexprvalue>false</rtexprvalue>
17 </attribute>
18 </tag>
1.1创建一个标签助手类继承 BodyTagSupport
标签属性必须与助手类的属性对应,且要提供对应get/set方法
package com.zking;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class HTag extends BodyTagSupport{

    private Object object;

    public Object getObject() {
        return object;
    }

    public void setObject(Object object) {
        this.object = object;
    }
    

doStartTag()方法是遇到标签开始会呼叫的方法,


其合法的返回值有EVAL_BODY_INCLUDESKIP_BODY.


EVAL_BODY_INCLUDE 表示将显示标签间的信息


SKIP_BODY. 则不显示标签间的文字

    
    @Override
    public int doStartTag() throws JspException {
        System.out.println("标签开始");
        return EVAL_BODY_BUFFERED;
    }
      @Override
    public int doAfterBody() throws JspException {
        System.out.println("进入标签循环");
        return EVAL_BODY_AGAIN;
    }
    


 doEndTag()方法是在遇到标签结束时呼叫的方法


其合法对返回值是EVAL_PAGESKIP_PAGE


EVAL_PAGE 表示处理完标签后继续执行以下的网页


SKIP_PAGE 则不处理接下来的JSP网页


      @Override
    public int doEndTag() throws JspException {
        System.out.println("标签结束");
        return EVAL_PAGE;
    }
      
}
原文地址:https://www.cnblogs.com/xmf3628/p/10959133.html