我希望能够按客户分组拥有一个预订表格,用户可以从中选择多个预订进行结算。因此我尝试使用子表格进行分组,然而,我不确定如何实现选择功能。显然,子表格不允许选择属性,如果在父数据表上设置选择属性,我不知道如何选择行键。这是我的尝试:
提交所选内容时,会出现以下错误:
<p:dataTable style="border: 0px;" value='#{clientController.allClients}'
var='client' rowKey="#{item.id}" selectionMode="multiple"
selection="#{bookingController.bookingsToBill}">
<p:subTable value='#{client.billableBookings}' var='item'>
<f:facet name="header">
<h:outputText style="font-weight:bold;" value="#{client.name}" />
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Booking"/>
</f:facet>
<h:outputText value="#{item.title}"/>
</p:column>
</p:subTable>
</p:dataTable>
提交所选内容时,会出现以下错误:
java.lang.NullPointerException
java.lang.reflect.Array.newArray(Native Method)
java.lang.reflect.Array.newInstance(Array.java:52)
org.primefaces.component.datatable.DataHelper.decodeMultipleSelection(DataHelper.java:238)
org.primefaces.component.datatable.DataHelper.decodeSelection(DataHelper.java:224)
org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:64)
javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
javax.faces.component.UIData.processDecodes(UIData.java:1162)
org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:531)
javax.faces.component.UIForm.processDecodes(UIForm.java:225)
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:933)
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
DataTable中支持子表格的多选吗?如果是,应该如何操作呢?如果不支持,您会建议采用哪种方式来实现类似的结果呢?
我正在使用:Primefaces 3.1.1 - Mojarra JSF 2.1 - Tomcat 6.0.14