黑马总结: jstl自定义标签

来源:互联网 发布:网络控制器驱动安装 编辑:程序博客网 时间:2024/04/29 20:21

      创建一个自定以标签,需要时java类,一个tld文件。这些准备工作,和自定义个el函数一样。但是这里有一点小的区别就是java的方法不是static的了。el函数是一个java类。不继承和实现任何一个类和接口。但是自定义标签需要实现一个tag接口。实现起来比较复杂。所以,我们只要继承TagSupport或者BodyTagSupport其中的一个。看字面的上的意思,就可以明白一个类是不带有标签体的标签一个带有标签体的标签的。

     首相我们要谈谈不带标签体的标签的生命周期。首相就是new一个标签的时候,标签会首相调用setPage、setParent、setter等方法。着是在给标签内部的变量赋值的一个过程。然后标签会调用doStartTag和doEndTag方法。当然根据放回值的不同,返回值的不同,可能会重复执行方法或者直接结束调用。下面的代码

 

 下面是如何下一个自定义的带标签体的标签,我们来重写for循环标签。

首先还是生命周期的问题。我们要知道,我们的标签是有标签体的,里面可能还要嵌套其他标签库的标签。在实际开发中,很多的标签是要嵌套使用的。这样才能让我们复杂的程序,运行在美观的jsp页面上。让程序员和美工都可能看的一目了然了。

首先,在创建对象的时候, 标签会首相调用setPage、setParent、setter等方法。但后是doStartTag、serBodyContext,doInitBody、然后是计算Body里面的内容。也就是赋值的过程。然后是doAfterBody,这个方法有俩个返回值,直接控制是否重复调用。

EVAL_BODY_AGAIN 重复调用doAfterBody方法。 SKIP_BODY结束调用。这里面需要强调一返回值,就是doStratTag方法中的EVAL_BODY_INCLUDE。这个返回,不仅仅可以继续执行下面的方法,还可以把,定义的标签属性,写到输出流中。方便我们输出。这个是自动的。代码实现如下

 

 

 

 

 

 

原创粉丝点击