自定义标签之TagSupport与BodyTagSupport的区别

   在自定义标签里,要处理标签体时要继承BodyTagSupport,其中TagSupport是BodyTagSupport的父类接下来,我们来看看二者之间的区别:

   1. TagSupport与BodyTagSupport 的区别主要是标签处理类是否需要与标签体交互如果不需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。用 TagSupport实现的标签,BodyTagSupport都可以实现,因为BodyTagSupport继承TagSupport。

     其中,交互就是标签处理类是否要读取标签体的内容和改变标签体返回的内容。


    2.生命周期的不同:

         TagSupport类的生命周期:


生命周期的方法:




        BodyTagSupport类的生命周期:


生命周期的方法:

例如:

public class outTag extends BodyTagSupport{
	//在自定义标签里有<attribute> 就因为标签助手类要有一个属性
	private Object value;
	
    public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}

	/**
     * 标签的结束
     */
	@Override
	public int doEndTag() throws JspException {
		// TODO Auto-generated method stub
//		System.out.println("doEndTag");
		
		//SKIP_BODY  不显示标签间的内容
		//EVAL_BODY_INCLUDE 显示标签间的内容
		try {
			//将属性值的信息 直接输出到页面上
			//pageContext页面上下文对象
			pageContext.getOut().print(value);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return EVAL_BODY_INCLUDE;
	}

	/**
	 * 标签的开始
	 */
	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
//		System.out.println("doStartTag");
		//SKIP_PAGE  结束后面的标签  直接跳过页面到<html>
		//EVAL_PAGE  显示后面的标签
		return EVAL_PAGE;
	}

	/**
	 * 释放
	 */
	@Override
	public void release() {
		// TODO Auto-generated method stub
		super.release();
	}
	

}

猜你喜欢

转载自blog.csdn.net/qq_42245219/article/details/80559321