2015-04-01 30 views
1

下面的代碼是不是在JBoss中7工作,我也測試了它在Tomcat的7JSP定製標籤: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後tagdependent的。但是,在JBoss 7中,tld驗證失敗<body-content>jsp</body-content>

在JBoss 7中,它與<body-content>scriptless</body-content>一起使用。但是,我有<%= contextPath%><jsp:expression>裏面的<xml>標籤。

如何解決?

回答

0

子標記<xml>在將<body-content>設置爲無腳本後進行處理。並且,用自定義標籤替換<xml>標籤中的腳本。