BodyTagSupport自定义标签

BodyTagSupport类的方法: 
编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag(); 

他们执行顺序如下: 
doStartTag()—>doInitBody()-->setBodyContent()àdoAfterBody()àdoEndTag() 

doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY, 
如果返回EVAL_BODY_INCLUDE则继续执行; 
如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行, 
而直接执行doEndTag()方法。 

setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。 
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY, 
EVAL_PAGE或SKIP_PAGE。 
如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY; 
如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分; 
如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行。

 

自定义JSP标签的一般步骤

(1)编写标签处理类,如:

package cn.com.mytag;

public class MyTag extends BodyTagSupport{

    public int doStartTag() throws JspException {

        

        return EVAL_PAGE;

    }

 

}

 

(2)创建标签库描述符(TLD),如:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>

<tlibversion>1.0</tlibversion>

<jspversion>1.1</jspversion>

<shortname>myTag</shortname>

<uri>http://www.xx.com.cn/tags/myTag </uri>

<tag>

<name>tag</name><!—-页面上使用 -- >

<tagclass> cn.com.mytag.MyTag</tagclass>

<attribute>

<name>name</name><!—参数-- >

<required>true</required>

</attribute>

<attribute>

<name>url</name><!—参数-- >

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

 

(3)web.xml配置标签库

<taglib>

    <taglib-uri> http://www.xx.com.cn/tags/myTag</taglib-uri>

    <taglib-location>

        /WEB-INF/tld/myTag.tld

    </taglib-location>

</taglib>

 

(4) 在JSP页面中使用标签,如:

<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="myTag" %>

<myTag:tag >

</myTag:tag >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值