这是一个场景,我有一个数据库表,其中包含付款但未由客户付款的账单。在托管bean中,这由Map< Cliente,List< Carrito>表示。 Cliente是每个客户和List< Carrito>是没有支付的账单清单。
我通过查询得到这张地图,同时我计算了他的账单中有多少Cliente被放入地图。此计数器值用于初始化属性(int []页面)。
地图显示在每个Cliente的一个rich dataTable中。每个dataTable都是分页的,在我设置的页脚中,
<rich:dataScroller page="#{adminCarritoBean.page[current.index]}"/>
是current.index的索引
<ui:repeat varStatus=”current”>
用于选择每对Cliente-List&lt; Carrito&gt;。
现在的问题。每次在dataTable中选择一个页面时,我都会得到一个ClassCastException。我有一个样本,两个Cliente一个有三个账单,另一个有六个账单。每个表都显示五个账单,所以当分页显示在第二位时我无法分页,页脚被锁定。
这是代码,
<ui:repeat value="#{adminCarritoBean.clientes.entrySet().toArray()}"
var="cliente" varStatus="current" id="repeat">
<table style="border-collapse:collapse; border:1px solid black;">
<tbody>
<tr><td>
<h:outputText value="#{cliente.key.nombre} #{cliente.key.apellido1} #{cliente.key.apellido2}" />
</td></tr>
</tbody>
</table>
<c:set value="#{adminCarritoBean.selectedIds.get(cliente.key)}" var="mapIds"/>
<rich:dataTable id="crtoTable" value="#{cliente.value}"
var="crto" iterationStatusVar="it" rows="5">
<rich:column>
<f:facet name="header">Referencia</f:facet>
<h:outputText value="#{crto.referencia}" />
</rich:column>
<rich:column>
<f:facet name="header">Fecha de Compra</f:facet>
<h:outputText value="#{crto.fechaCompra}" />
</rich:column>
----------------------------
----------------------------
<rich:column>
<f:facet name="header">Select</f:facet>
<h:selectBooleanCheckbox value="#{mapIds[crto.id]}" />
</rich:column>
<f:facet name="footer">
<rich:dataScroller page="#{adminCarritoBean.page[current.index]}"/>
</f:facet>
</rich:dataTable>
<br />
</ui:repeat>
初始化int []页面的代码如下,
if(count > 0) {
loadList = true;
if((null == page) || ((null != page) && (count < page.length))) {
page = new int[count];
for(int i = 0; i < count; i++) {
page[i] = 1;
}
}
}