【发布时间】:2015-06-05 22:09:12
【问题描述】:
下面的代码在 JBoss 7 中不起作用。我也在 Tomcat 7 中测试过。
根本原因是构造函数,没有为<xml>标签调用doAfterBody方法。即使它被父标签<xslt>调用。
当子标签<xml> 移到<xslt> 之外时,它就会起作用。这意味着子标签无法识别。
.tld 文件:
<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>xx</short-name>
<uri></uri>
<tag>
<name>xml</name>
<tag-class>com.mycompany.XsltXmlTag</tag-class>
<body-content>tagdependent</body-content>
</tag>
<tag>
<name>xslt</name>
<tag-class>com.mycompany.XsltTag</tag-class>
<body-content>tagdependent</body-content>
</tag>
</taglib>
<xml> 标签的标签类:
public class XsltXmlTag extends BodyTagSupport {
public XsltXmlTag() {
log("constructor not invoked.");
}
public int doAfterBody() throws JspException {
log("this method is not invoked.");
...
}
...
}
jsp:
<%@ taglib uri="xmlx.tld" prefix="x"%>
...
<x:xslt media="html">
<x:xml>
<?xml version="1.0" ?>
...
</x:xml>
...
</x:xslt>
它在 Tomcat 7 中工作,在将 <body-content> 设置为 jsp 而不是依赖于标签之后。但是,在 JBoss 7 中,<body-content>jsp</body-content> 的 tld 验证失败
在 JBoss 7 中,它适用于 <body-content>scriptless</body-content>。但是,我在<xml> 标签内有诸如<%= contextPath%> 和<jsp:expression> 之类的脚本。
如何解决?
【问题讨论】:
标签: java jsp jboss7.x custom-tags