2016-06-14 8 views
0

Ich habe eine seltsame auf einer JBoss 7.2.2-Instanz. Die Webapp funktioniert tadellos in Tomcat 7.x JSF 2.2.JBoss 7.2.2 <ui:insert> Attribut 'src', 'Datei' oder 'Seite' ist erforderlich

javax.servlet.ServletException: /WEB-INF/template.xhtml @ 10,38 Attribut 'src', 'Datei' oder 'Seite' erforderlich ist

Hier ist die „fehlerhaft "Vorlage (WEB-INF/template.xhtml).

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 

    <h:head> 
     <title><ui:insert name="title">My Web App</ui:insert></title> 

Soweit ich weiß, <ui:insert> unterstützt nur das name Attribut ich einen Namespace-Konflikt vermuten, aber ich bin ratlos ...

Und hier ist die volle Stack-Trace

javax.servlet.ServletException: /WEB-INF/template.xhtml @10,38 <ui:insert> Attribute 'src', 'file' or 'page' is required 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) 
    org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) 

JBWEB000071: root cause 

javax.faces.view.facelets.FaceletException: /WEB-INF/template.xhtml @10,38 <ui:insert> Attribute 'src', 'file' or 'page' is required 
    com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.createHandler(AbstractTagLibrary.java:309) 
    com.sun.faces.facelets.tag.AbstractTagLibrary.createTagHandler(AbstractTagLibrary.java:676) 
    com.sun.faces.facelets.tag.CompositeTagLibrary.createTagHandler(CompositeTagLibrary.java:184) 
    com.sun.faces.facelets.compiler.TagUnit.createFaceletHandler(TagUnit.java:120) 
    com.sun.faces.facelets.compiler.TextUnit.createFaceletHandler(TextUnit.java:117) 
    com.sun.faces.facelets.compiler.CompilationUnit.getNextFaceletHandler(CompilationUnit.java:115) 
    com.sun.faces.facelets.compiler.NamespaceUnit.createFaceletHandler(NamespaceUnit.java:82) 
    com.sun.faces.facelets.compiler.CompilationUnit.getNextFaceletHandler(CompilationUnit.java:115) 
    com.sun.faces.facelets.compiler.CompilationUnit.createFaceletHandler(CompilationUnit.java:106) 
    com.sun.faces.facelets.compiler.CompilationManager.createFaceletHandler(CompilationManager.java:373) 
    com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:441) 
    com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:403) 
    com.sun.faces.facelets.compiler.Compiler.compile(Compiler.java:124) 
    com.sun.faces.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:319) 
    com.sun.faces.facelets.impl.DefaultFaceletFactory.access$100(DefaultFaceletFactory.java:92) 
    com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:159) 
    com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:157) 
    com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:79) 
    com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:74) 
    com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99) 
    java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114) 
    com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:117) 
    com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:58) 
    com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:256) 
    com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:378) 
    com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:358) 
    com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
    com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155) 
    com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
    com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) 
    com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:164) 
    com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:902) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) 
+1

Tomcat als barebones Servletcontainer wird nicht mit JSF ausgeliefert, daher müssen Sie es (und JSTL) manuell in webapp bündeln. JBoss AS ist jedoch ein vollwertiger Java EE-Anwendungsserver, der bereits mit JSF (und JSTL) gebündelt ausgeliefert wird. Alle von webapp bereitgestellten Dateien würden nur zu Konflikten führen. Bist du dir dessen bewusst? Möglicherweise verwandt/duplizieren: http://stackoverflow.com/q/8081234 – BalusC

+0

Danke Ballusc. Ja, mir ist das bekannt und ich habe mehrere Tests durchgeführt, bevor ich die tomcat webapp portiert habe. Einige aus Ihrer Sammlung von JSF-Antworten. Der einzige Unterschied, den ich bemerkte, war, dass ich das JSF-Servlet explizit in web.xml deklarieren musste (aber ich hatte immer die Jars im Lieferumfang). Jetzt, wo du mich daran erinnert hast, habe ich mir JBoss-Module angesehen und es sieht so aus, als ob es nur JSF 2.1 unterstützt. ls ../modules/system/layers/base/com/sun/jsf-impl/main jsf-impl-2.1.19-redhat-2.jar. Also ich denke, es ist Zeit zu [upgrade] (http://stackoverflow.com/questions/17085717/upgrade-jsf-mojarra-in-jboss-as-eap-wildfly) –

Antwort

0

Dank BalusC's Kommentar Ich habe mir die JSF-Module in JBoss angeschaut und es war klar, dass AS 7.2.2 nur mit Mojara 2.1.19 geliefert wird (nicht 2.2.x - von denen ich eine Reihe von Facelet-Features verwendete).

Also folgte ich his upgrade howto sowie this one on JBossDeveloper und meine JBoss 7.2.2 unterstützt jetzt JSF 2.2.13.

Und damit funktioniert die Webapp in der gleichen Weise wie in Tomcat mit den gleichen Gläsern (im Krieg in Tomcat Fall).