jsp标签循环标签体

引用:http://liuna718-163-com.iteye.com/blog/1318991

1.在IterationTag接口是Tag接口的子接口,里面有个doAfterBody方法,该方法决定是否重复执行标签体内容

2.web容器执行自定义标签的过程如下
初始化时调用setPageContent()方法,完了在调用setParent方法
2.1web容器首先执行自定义标签的开始标记,同时调用doStartTag方法。
2.2如果doStartTag方法返回EVAL_BODY_INCLUDE,web容器在执行完标签体的内容后,会调用标签类得doAfterBody方法;
如果doStartTag方法返回SKIP_BODY,doAfterBody方法不会调用,web容器会直接调用标签类得doEndTag方法
2.3如果doAfterBody方法被调用,并且方法返回EVAL_BODY_AGIN,web容器会再次执行标签体的内容;
如果doAfterBody方法返回SKIP_BODY,web容器会调用标签类的doEndTag方法
2.4如果doEndTag方法返回EVAL_PAGE,web容器会执行标签后面的内容;
如果doEndTag方法返回SKIP_PAGE,web容器会忽略自定义标签后面的内容

3.实现BodyTag接口的BodyTagSupport类使用
在编写代码时需要注意一下几点:
由于setPageContext方法、setParent方法、属性的setter方法和doStartTag方法在setBodyContent方法之前调用,因此不能再这些方法中使用bodyContext对象,也就是说只能在setBodyContent方法后面被调用的方法中才能使用BodyContent对象,如doInitBody、doAfterBody和doEndBody方法.
如果要修改标签体的内容,只能在标签体执行完成后再处理,也就是说,只能在doAfterBody或doEndTag方法中编写处理代码。

posted @ 2012-05-05 09:36  刘振明  阅读(2561)  评论(0编辑  收藏  举报