自定义标签2

来源:互联网 发布:java邮箱正则表达式 编辑:程序博客网 时间:2024/05/01 21:10
 

JspFragment.invoke()可以说是JspFragment最重要的方法,利用这个方法可以控制是否执行和输出标签体的内容、是否迭代执行标签体的内容或对标签体的执行结果进行修改后再输出。

1、在标签处理器中如果没有调用JspFragment.invoke方法,其结果就相当于忽略标签体内容;

2、在标签处理器中重复调用JspFragment.invoke方法,则标签体内容将会被重复执行;

要想让一个自定义标签具有属性,通常需要完成两个任务:

在标签处理器中编写每个属性对应的setter方法

在TLD文件中描术标签的属性

为自定义标签定义属性时,每个属性都必须按照JavaBean的属性命名方式,在标签处理器中定义属性名对应的setter方法,用来接收JSP页面调用自定义标签时传递进来的属性值。 例如属性url,在标签处理器类中就要定义相应的setUrl(String url)方法。

在标签处理器中定义相应的set方法后,JSP引擎在解析执行开始标签前,也就是调用doStartTag方法前,会调用set属性方法,为标签设置属性。

       (1)标签处理器—Java类,实现Tag接口

(2)编写:tid

JSP页面使用自定义标签

<dhw:aaa>

<dhw:viewIP>

</dhw:viewIP>

</dhw:aaa>

this.pageContext.getOut(),getSession(),getRequest(),

<%@page

<%@include

<%@tagelib uri=”htpp://www.hbsi.cnprefix=”hbsi”%

(1) 通过doStartTag()的返回值决定是否处理标签的内容

Tag.EVAL_BODY_INCLUDE Tag.SKIP_BODY

(2) 通过doEndTag()的返回值决定是否返回继续处理jsp页面中该自定义的标签

IterationTag

(1) 将标签处理器实例化成对象

(2) 调用标签处理器对象的setPageContext()将jsp页面pageContext对象

(3) 调用标签处理器对象的setParent()将父标签对象作参数传递给标签处理器

(4) 调用doStartTag,返回值决定是否执行标签体

(5) 标签体的处理

(6) 调用doAfterBody()—返回值可以决定是否执行要重复执行的标签体内容

原创粉丝点击