У меня есть записи, такие как список объектов списка, и которые должны отображаться как вложенные datatables. Поэтому решили использовать datatable внутри datagrid/datalist/uirepeat/p: повторять и сортировать для данных datatables. Вот приведенный ниже код. Он способен отображать отлично, но после сортировки по более чем 1 генерируемым данным и удалению submit, при рендеринге на ту же страницу приложение бросает NullpointerException
в primefaces
datatable findcolumngroup
. Это происходит только в том случае, если мы сортируем по нескольким генерируемым datatables. Если сортировка выполняется только для 1 создаваемой сгенерированной и нажатой кнопки отправки, проблема не возникает. Также, если сортировка не применяется, то она отлично работает без каких-либо исключений. Область боба - viewcope. Я также установил rowStatePreserved = true, после добавления этой сортировки не работал.Основные интерфейсы Вложенные данные, которые выбрасывают исключение нулевого указателя после сортировки по ним и отправляют и отображают на ту же страницу
<p:dataGrid var="cardslist" value="#{bean.cardslist}">
<h:panelGrid columns="1" border="0">
<p:column>
<p:dataTable value="#{cardslist.businesslist}"
var="card">
<p:column headerText="businessname" sortBy="#{card.business.name}">
<h:outputText value="#{card.business.name}" />
</p:column>
</p:dataTable>
</p:column>
</h:panelGrid>
</p:dataGrid>
<p:commandButton value="submit" style="width:auto;"
action="#{bean.submit}"
update=":testform" />
Исключение брошено:
[1/02/17 7:45:28:801 CET] 0000009f FaceletViewDe E Error Rendering View[/cbhCardsOverview.xhtml]
java.lang.NullPointerException
at org.primefaces.component.datatable.DataTable.findColumnInGroup(DataTable.java:909)
at org.primefaces.component.datatable.DataTable.findColumn(DataTable.java:900)
at org.primefaces.component.datatable.DataTable.getSortColumn(DataTable.java:1444)
at org.primefaces.component.datatable.feature.SortFeature.singleSort(SortFeature.java:136)
at org.primefaces.component.datatable.DataTableRenderer.preRender(DataTableRenderer.java:109)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:579)
at javax.faces.component.UIData.encodeEnd(UIData.java:869)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:89)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
at org.primefaces.component.column.ColumnRenderer.encodeEnd(ColumnRenderer.java:54)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:579)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:543)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:315)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:150)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:579)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:89)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72)
at org.primefaces.component.datagrid.DataGridRenderer.encodeTable(DataGridRenderer.java:203)
at org.primefaces.component.datagrid.DataGridRenderer.encodeContent(DataGridRenderer.java:130)
at org.primefaces.component.datagrid.DataGridRenderer.encodeMarkup(DataGridRenderer.java:112)
at org.primefaces.component.datagrid.DataGridRenderer.encodeEnd(DataGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:579)
at javax.faces.component.UIData.encodeEnd(UIData.java:869)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
at org.apache.myfaces.context.servlet.PartialViewContextImpl$PhaseAwareVisitCallback.processRenderComponent(PartialViewContextImpl.java:576)
at org.apache.myfaces.context.servlet.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:554)
at org.apache.myfaces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:207)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:773)
at javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1051)
at javax.faces.component.UIForm.visitTree(UIForm.java:246)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:793)
at javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1051)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:793)
at javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1051)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:793)
at javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1051)
at org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartialRendering(PartialViewContextImpl.java:443)
at org.apache.myfaces.context.servlet.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:363)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:390)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:617)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1364)
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at colruyt.webutillib.filter.ResponseBufferFilter.doFilter(ResponseBufferFilter.java:35)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at colruyt.webutillib.session.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:65)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at colruyt.webutillib.security.SecurityFilter.doFilter(SecurityFilter.java:132)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:960)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1064)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:914)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:84)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
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:1702)
Да, я пытался добавить идентификаторы всех компонентов. все тот же выпуск. –