我正在尝试创建一个使用其他自定义标签的自定义标签。
我的方法是这样的:
public int doAfterBody() throws JspTagException {
BodyContent bc = getBodyContent();
if (bc!=null) {
String body = bc.getString().toUpperCase();
try {
bc.clearBody();
bc.getEnclosingWriter().write("<some-other-custom-tag>");
} catch (IOException e) {
e.printStackTrace();
}
}
return SKIP_BODY;
}
这似乎不起作用,因为我使用 BodyContent 编写的任何内容都不再被处理,因此 JSP 的输出仍然包含<some-other-custom-tag>
. 有没有办法在输出最终进入浏览器之前对其进行处理?
编辑:我可能没有很好地表达我的问题。(我认为)我知道编译的工作原理以及请求如何变成文档。
据我了解,编译器检查我的 JSP 并找到<custom-tag>
. 它查看引用的 TLD 并找到与标记关联的 Java 类。它调用类,设置参数和东西,然后执行类似的方法doAfterBody()
(取决于类扩展的标记处理程序的类型)。从那里我写到<some-other-custom-tag>
JSP 的输出。我知道这不起作用,因为编译器不会再次查看它,因此没有意识到还有另一个自定义标签要处理。
我正在寻找一种方法来(1)让编译器再次处理(部分)输出,或者(2)让编译器处理包含的 String 对象,<some-other-custom-tag>
以便我可以将其写入输出。
当然,我也愿意接受任何替代解决方案。