自定义标签功能扩展

(jsp2.0以前的标签接口,传统标签)

1、用标签控制jsp页面部分内容是否输出:

        自定义一个标签,在对应的标签处理类中覆盖TagSupportdoStartTag()方法,将其返回值设为Tag.EVAL_BODY_INCLUDE(输出)、Tag.SKIP_BODY(不输出);

        然后在tld文件中声明这个标签,标签体设置为JSP

        最后导入标签就可以使用了。

 

2、用标签控制jsp整个页面是否输出:

        和上面的方法差不多,唯一不同的是这次是覆盖TagSupportdoEndTag()方法,将其返回值设置为Tag.EVAL_PAGE(输出整个jsp页面)、Tag.SKIP_PAGE(不输出jsp页面);

        在tld文件中的标签体部分设为empty

        把这个标签写到jsp页面,标签后面的内容是否执行根据标签执行后的返回值来定。

 

3、用标签控制页面内容重复输出:

        实现IterationTag接口,继承他的实现类TagSupport

        在标签处理类中覆盖doStartTag()和doAfterBody()方法,前面方法控制标签内容是否输出,后一个方法在标签体内容执行完后调用;

        前一个方法的返回值要为Tag.EVAL_BODY_INCLUDE,后一个方法返回值要为IterationTag.EVAL_BODY_AGAIN才重复执行标签体内容,IterationTag.SKIP_BODY,则结束执行标签体内容。

 

4、修改标签体内容:

        实现BodyTag接口,继承他的实现类BodyTagSupport,覆盖doStartTag方法和doEndTag方法;

 

        doStartTag方法的返回值为return BodyTagSupport.EVAL_BODY_BUFFERED;这时候把标签体封装到一个BodyContent对象里面;

        接下来在doEndTag方法中对标签体内容操作就ok了;

例如:

BodyContent bc=this.getBodyContent();

String content=bc.getString();

content=content.toUpperCase();

try

{

this.pageContext.getOut().print(content);

}

catch (IOException e)

{

throw new RuntimeException(e);

}

return Tag.EVAL_PAGE;

 


版权声明:本文为u010378579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。