在doInitBody()方法中更改BodyContent

时间:2014-06-25 14:38:16

标签: html jsp java-ee tags taglib

我一直关注jsp tutorial来创建我的自定义标记,该标记会生成一个正文,然后对其进行评估。

正如文档所述:

  

setBodyContent:创建正文内容并添加到标记处理程序

     

doInitBody:在评估标签正文之前调用

     

doAfterBody:评估标签正文后调用

典型的调用顺序如下:

t.doStartTag();
out = pageContext.pushBody();
t.setBodyContent(out);
// perform any initialization needed after body content is set
t.doInitBody();
t.doAfterBody();
// while doAfterBody
 returns EVAL_BODY_AGAIN
 we
 // iterate body evaluation
...
t.doAfterBody();
t.doEndTag();
out = pageContext.popBody();
t.release();

所以我通过自定义标记实现,扩展 BodyTagSupport ,并在 doInitBody()中实现:

@Override
    public void doInitBody() throws JspException {
        BodyContent content = getBodyContent();
        try {
            content.clearBody();
            content.write("Hello World!");
        } catch (IOException e) {
            throw new JspException(e);
        }
    }

不幸的是它不起作用且标签不输出东西..

taglib定义很简单:

<tag>
        <description>bla bla bla</description>
        <name>test</name>
        <tag-class>mypackage.TestTag</tag-class>
        <body-content>tagdependent</body-content>
        <dynamic-attributes>true</dynamic-attributes>        
    </tag>

标签用作:

<input:test>content</input:test>

但它没有输出任何内容..有关如何解决此问题的任何建议吗?

0 个答案:

没有答案