我已将我的应用程序升级到primefaces 5.1,如果我使用带数据表的绑定属性,我的下面的代码开始抛出NPE。有没有人知道为什么在升级到新的primefaces版本后,如果点击排序图标对数据进行排序,我会得到Null指针异常。
xhtml代码
<h:body>
<h:form id="dataForm">
<p:dataTable id="datatableId" value="#{bean.listToDisplay}" var="list" widgetVar="datatableVar" binding="#{bean.dataTable}">
<p:column id="titleColumn" filterBy="#{list.title}" sortBy="#{list.title}" headerText="Title" filterMatchMode="contains">
#{list.title}
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
以下我得到的例外
SEVERE: java.lang.NullPointerException
at org.primefaces.component.datatable.DataTable.findColumn(DataTable.java:785)
at org.primefaces.component.datatable.feature.SortFeature.decode(SortFeature.java:85)
at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:62)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:789)
at org.primefaces.component.api.UIData.processDecodes(UIData.java:246)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:534)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.primefaces.component.api.UIData.visitTree(UIData.java:692)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1663)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1663)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1663)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:383)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:257)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
答案 0 :(得分:0)
根据我自己在遇到同样问题后的实验,我发现将DataTable
对象放在@RequestScoped
托管bean中似乎可以解决问题。
这可以包括将托管bean更改为@RequestScoped
,如果可能,如果不可能,请创建一个包含@RequestScoped
的单独DataTable
bean。