jsp 自定义标记:未调用 doAfterBody 方法
jsp Custom Tag: doAfterBody method is not invoked
下面的代码在 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>
标签 class 用于 <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 而不是 tagdependent 之后。但是,在 JBoss 7 中,<body-content>jsp</body-content>
的顶级域名验证失败
在JBoss7中,它与<body-content>scriptless</body-content>
一起工作。但是,我在 <xml>
标签内有 <%= contextPath%>
和 <jsp:expression>
等脚本。
如何解决?
子标签 <xml>
在将 <body-content>
设置为无脚本后处理。并且,已将 <xml>
标签内的脚本替换为自定义标签。
下面的代码在 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>
标签 class 用于 <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 而不是 tagdependent 之后。但是,在 JBoss 7 中,<body-content>jsp</body-content>
在JBoss7中,它与<body-content>scriptless</body-content>
一起工作。但是,我在 <xml>
标签内有 <%= contextPath%>
和 <jsp:expression>
等脚本。
如何解决?
子标签 <xml>
在将 <body-content>
设置为无脚本后处理。并且,已将 <xml>
标签内的脚本替换为自定义标签。