在自定义标签里,要处理标签体时要继承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();
}
}