PrimeFaces 2.2.M1-SNAPSHOT + Facelets 1.1.15 Does Not Work

UI Components for JSF
Post Reply
User avatar
cparker
Posts: 6
Joined: 27 Jan 2010, 00:56
Location: Boston, MA
Contact:

31 Aug 2010, 17:53

I'm attempting to run PrimeFaces 2.2.M1-SNAPSHOT with Facelets 1.1.15. This is due to the usage of RichFaces 3.3.3 in my project. RichFaces 3.3.3 does not support the JSF 2 Facelets VDL, so it needs to be disabled, instead using the external Facelets 1.1.15 JAR. See http://community.jboss.org/wiki/RichFaces333andJSF20 for more information about this.

However, when I do so, I'm not able to run the basic PrimeFaces example from the "Getting Started" page. In case it matters, I'm using WebSphere Application Server 7.0.0.9 and Mojarra 2.0.3.

Stack trace:

Code: Select all

[8/31/10 11:17:07:873 EDT] 00000033 compiler      E   Error Loading Library: wsjar:file:/D:/webapp/WEB-INF/lib/primefaces-2.2.M1-SNAPSHOT.jar!/META-INF/primefaces-i.taglib.xml
                                 java.io.IOException: Error parsing [wsjar:file:/D:/webapp/WEB-INF/lib/primefaces-2.2.M1-SNAPSHOT.jar!/META-INF/primefaces-i.taglib.xml]: 
	at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:410)
	at com.sun.facelets.compiler.TagLibraryConfig.loadImplicit(TagLibraryConfig.java:431)
	at com.sun.facelets.compiler.Compiler.initialize(Compiler.java:87)
	at com.sun.facelets.compiler.Compiler.compile(Compiler.java:104)
	at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:218)
	at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:149)
	at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:100)
	at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:519)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:569)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1661)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1595)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
	at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
	at com.mycompany.securityrequest.SecurityRequestFilter.doFilter(SecurityRequestFilter.java:171)
	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:895)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:932)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:500)
	at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3810)
	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
	at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:183)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by: org.xml.sax.SAXException: Error Handling [wsjar:file:/D:/webapp/WEB-INF/lib/primefaces-2.2.M1-SNAPSHOT.jar!/META-INF/primefaces-i.taglib.xml@5,17]
	at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.error(TagLibraryConfig.java:376)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
	at javax.xml.parsers.SAXParser.parse(Unknown Source)
	at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:407)
	... 67 more
Caused by: org.xml.sax.SAXParseException: Document root element "facelet-taglib", must match DOCTYPE root "null".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	... 85 more
My test page that causes exception in stack trace (all I see is the <h1> tag in the browser):

Code: Select all

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sub.com/jsf/html"
    xmlns:p="http://primefaces.prime.com.tr/ui">
    
    <head>
        <p:resources />
    </head>
    
    <body>
        <h1>PrimeFaces 2 + JSF 2 on WebSphere 7</h1>
        <p:editor value="#{myBean.htmlText}" />
    </body>
</html>
Relevant portions of web.xml:

Code: Select all

<!-- start JSF and Facelets -->
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <!--
         From http://community.jboss.org/wiki/RichFaces333andJSF20:
         RichFaces does not support JSF 2 built-in Facelets (VDL); Facelets 1.1.15
         should be used because of dependencies in RichFaces from the Tag Handlers
         classes. As RichFaces 3.3.3 does not support VDL, it does not support any
         new tags like f:ajax, h:outputScript, and so on. We should continue to
         use the RichFaces equivalent tags where appropriate.
    -->
    <context-param>
         <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
         <param-value>true</param-value>
    </context-param>

    <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>true</param-value>
    </context-param>
    
    <context-param>
        <param-name>com.sun.faces.displayConfiguration</param-name>
        <param-value>true</param-value>
    </context-param>  
    
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
    
    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>FacesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
<!-- end JSF and Facelets -->

<!-- Start RichFaces -->
    <context-param>
        <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
        <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>

    <context-param>
        <param-name>org.richfaces.CONTROL_SKINNING</param-name>
        <param-value>enable</param-value>
    </context-param>
<!-- End RichFaces -->

<!-- Start PrimeFaces -->
    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/primefaces_resource/*</url-pattern>
    </servlet-mapping>
<!-- End PrimeFaces -->
Trimmed faces-config.xml:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0"
       xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

    <!-- Facelets support -->
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>
</faces-config>
Related PrimeFaces forum threads:
Christopher C. Parker

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

31 Aug 2010, 18:02

Facelets is standard and built-in feature of JSF 2.0 so you need to remove Facelets jar and Facelet viewhandler configuration. But this will break RichFaces 3.3.3 which does not support JSF 2.0 properly.

User avatar
cparker
Posts: 6
Joined: 27 Jan 2010, 00:56
Location: Boston, MA
Contact:

31 Aug 2010, 18:28

Considering that the combination of RichFaces and PrimeFaces seems to be pretty common, do you plan on making PrimeFaces 2.x compatible with the usage of Facelets 1.1.15 so people using RichFaces 3.3.3 may continue to use PrimeFaces and receive new functionality? Otherwise, people using RichFaces will be stuck with PrimeFaces 1.1 (or PrimeFaces 1.0.2 if they need scrolling on <p:dataTable>), since there will not be a PrimeFaces 1.2.

Many people using RichFaces 3.3.3 are going to be stuck there for quite a while, since RichFaces 4 is not near a stable release and is not backward-compatible with RichFaces 3.3.3. Because of this issue, adoption of PrimeFaces 2.x will not be possible for these people (including me) ... which is sad :(, because it seems like PrimeFaces 2.2 will have a lot to offer.
Christopher C. Parker

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

31 Aug 2010, 18:31

We'll not work on to make PrimeFaces 2 compatible with Facelets 1.x as it will be a huge step back. Sorry to hear that you are stuck with JSF 1.2.

User avatar
cparker
Posts: 6
Joined: 27 Jan 2010, 00:56
Location: Boston, MA
Contact:

31 Aug 2010, 18:34

I didn't think so, but I just wanted to have a confirmation...

Thanks! :)
Christopher C. Parker

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 22 guests