我一直关注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>
但它没有输出任何内容..有关如何解决此问题的任何建议吗?