Mojarra 2.3.0-m06: Glassfish4.1.1: Primefaces 6.0: basic p:dataTable with rowEdit fails
There is a complete description and mini web test app at:
- https://github.com/webelcomau/PrimeFace ... JSF23/wiki
- https://github.com/webelcomau/PrimeFace ... master.zip
That test web app works fine when I use the built-in Mojarra in Glassfish 4.1.1 OR when I use Mojarra 2.2.8-18 as .../glassfish/modules/javax.faces.jar.
It fails when I use Mojarra 2.3.0-m6 with a row-editable Primefaces 6.0 p:dataTable.
To demonstrate the problem with the test web app
The test web app project includes under ./lib for convenience these Mojarra versions: javax.faces-2.2.8-12.jar, javax.faces-2.2.8-17.jar, javax.faces-2.2.8-18.jar, javax.faces-2.3.0-m06.jar
First convince yourself it works fine with Mojarra 2.2.8-x versions:
- Use the javax.faces.jar provided with NetBeans8.1/Glassfish4.1.1 (or copy one of the javax.faces-2.2.8-x.jar versions provided over .../glassfish/modules/javax.faces.jar).
- (Re)start Glassfish and run the web app from within NetBeans8.1. It will bring up an index page that echoes the Mojarra version, and offers a link to a p:dataTable test page. Click on that link, use row editing in the functioning p:dataTable.
From tableDEBUG.xhtml:
Code: Select all
<p:dataTable
id="dataTable"
var="e"
value="#{viewBean.entities}"
editable="true"
>
<p:ajax
event="rowEdit"
listener="#{viewBean.updateRow}"
/>
<p:column
sortBy="#{e.name}"
>
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{e.name}"/>
</p:column>
<p:column
headerText="ValInt"
sortBy="#{e.valInt}"
>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{e.valInt}"/>
</f:facet>
<f:facet name="input">
<p:inputText
id="valInt"
value="#{e.valInt}"
required="true"
/>
<p:message
for="valInt"
/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<f:facet name="header">
EDIT !
</f:facet>
<p:rowEditor/>
</p:column>
</p:dataTable>
- Undeploy the web app and stop Glassfish. Copy javax.faces-2.3.0-m06.jar over .../glassfish/modules/javax.faces.jar. Restart Glassfish (after clearing caches to be sure) and run the web app again.
- Check that the index page echoes the Mojarra version 2.3.0-m06.
- Click on the link to the p:dataTable test page to get this error:
Code: Select all
Severe: Error Rendering View[/tableDEBUG.xhtml] java.lang.NullPointerException at com.sun.faces.facelets.util.DevTools.writeAttributes(DevTools.java:410) at com.sun.faces.facelets.util.DevTools.writeStart(DevTools.java:463) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:272) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.debugHtml(DevTools.java:202) at com.sun.faces.facelets.tag.ui.UIDebug.writeDebugOutput(UIDebug.java:153) at com.sun.faces.facelets.tag.ui.UIDebug.encodeBegin(UIDebug.java:134) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1908) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1908) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:460) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:136) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:126) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:669) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access00(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:745)
Warning: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception java.lang.NullPointerException at com.sun.faces.facelets.util.DevTools.writeAttributes(DevTools.java:410) at com.sun.faces.facelets.util.DevTools.writeStart(DevTools.java:463) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:272) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.writeComponent(DevTools.java:291) at com.sun.faces.facelets.util.DevTools.debugHtml(DevTools.java:141) at com.sun.faces.renderkit.RenderKitUtils.renderHtmlErrorPage(RenderKitUtils.java:1299) at com.sun.faces.context.ExceptionHandlerImpl.throwIt(ExceptionHandlerImpl.java:279) at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:143) at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:669) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access00(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:745)