以下代码在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>
在将<body-content>
设置为jsp而不是tagdependent之后,它在Tomcat 7中工作。但是,在JBoss 7中,<body-content>jsp</body-content>
在JBoss 7中,它适用于<body-content>scriptless</body-content>
。但是,我在<%= contextPath%>
标记内有<jsp:expression>
和<xml>
等脚本。
如何解决?
答案 0 :(得分:0)
<xml>
设置为无脚本后,会处理子标记<body-content>
。并且,已使用自定义标记替换<xml>
标记内的脚本。