Ниже код не работает в JBoss 7. Кроме того, я проверил его в Tomcat 7.Jsp Пользовательский тег: метод doAfterBody не вызывается
Основной причиной является конструктор и метод doAfterBody не вызывается для <xml>
тега. Хотя он вызывается для родительского тега <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 вместо от taggependent. Но, в JBoss 7, проверка tld не удалась для <body-content>jsp</body-content>
В JBoss 7 работает с <body-content>scriptless</body-content>
. Но у меня есть сценарии, такие как <%= contextPath%>
и <jsp:expression>
внутри <xml>
тег.
как исправить?