JavaWeb_带父标签的自定义标签
1.开发有父标签的标签:
1)父标签无法获取子标签的引用,父标签仅把子标签作为标签体来使用
2)子标签可以通过getParent()方法获取父标签的引用(需继承SimpleTagSupport或自实现SimpleTag接口的该方法):
若子标签的确有父标签,JSP引擎会把代表父标签的引用通过setParent(JspTag parent)赋给标签处理器
3)注意:父标签的类型是JspTag类型
带标签体的自定义标签:该接口是一个空接口,但是来统一SimpleTag和Tag的,实际使用需要进行类型的强制转换
4)在tld配置文件中,无需为父标签有额外的配置,但,子标签是以标签体的形式存在的,所以父标签的<body-content></body-content>,需设置为scriptless
5)实现
<c:choose>
<c:when test="${param.age > 24}">大学毕业</c:when>
<c:when test="${param.age > 20}">高中毕业</c:when>
<c:otherwise>高中以下...</c:otherwise>
</c:choose>
>开发3个标签:choose,when,otherwise
>其中when标签有一个boolean类型的属性:test
>choose是when和otherwise的父标签,when在otherwise之前使用。
>when在otherwise之前使用
>在父标签choose中定义一个"全局"的boolean类型的flag:用于判断子标签在满足条件的情况下是否执行。
* 若when的test为true,且when的父标签的flag也为true,则执行when的标签体(正常输出标签体的内容)。
* 若when的test为true,且when的父标签的flag也为false,则不执行标签体。
* 若flag为true,otherwise执行标签体。