2015-04-01 2 views
1

Ниже код не работает в 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> тег.

как исправить?

ответ

0

дочерний тег <xml> обрабатывается после установки <body-content> без письменного разрешения. И заменили скрипты внутри тега <xml> на пользовательские теги.

Смежные вопросы