开发嵌套的标签:haveChildTag 实际工程中往往需要多个标签来配合完成一定的功能,嵌套的标签存在父子关系,其中,父为外层标签,子为内层标签。本实例将用两个简单的标签来演示,父标签则作出逻辑判断,如果isOutput属性为true,则输出实例108中的标签helloTag;如果为false,则不输出。 (1)第一步:开发标签实现类。 内层的标签helloTag在实例108中已有,此处不再列出。 haveChildTag.java package hello; import javax.servlet.jsp.tagext.BodyTagSupport; public class haveChildTag extends BodyTagSupport { private boolean isOutput;//是否输出子标签内容 //----标签开始时调用此方法------- public int doStartTag(){ if(isOutput) return EVAL_BODY_INCLUDE; else return SKIP_BODY; } //----标签结束时调用此方法------- public int doEndTag(){ try{ if(bodyContent!=null) bodyContent.writeOut(bodyContent.getEnclosingWriter()); }catch(Exception e){ System.out.println(e); } return EVAL_PAGE; } public boolean getIsOutput() { return isOutput; } public void setIsOutput(boolean isOutput) { this.isOutput = isOutput; } } (2)第二步:编写标签描述tld文件。 本例在myTag.tld文件中增加内容。在与之间增加的如下内容:
haveChildTag
hello.haveChildTag
jsp
isOutput true true (3)第三步:在Web应用的web.xml文件中声明标签库引用。 同样,本例与本章前面的实例使用同一个tld文件,此处不必再修改。 (4)第四步:在JSP页面中声明并调用标签。 useHaveChildTag.jsp
输出子标签时的结果:
不输出子标签时的结果: