这是场景,我有一个数据库表,其中包含客户已支付和未支付的账单。在托管 bean 中,这由 Map<Cliente, List<Carrito> 表示,其中 Cliente 是每个客户,List<Carrito> 是未支付的账单列表。
我通过查询获得了这张地图,同时我计算了客户在地图上的账单金额。此计数器值用于初始化属性(int[] 页)。
该地图显示在每个客户的一个丰富的数据表中。每个数据表都是分页的,我在它们的页脚中设置,
<rich:dataScroller page="#{adminCarritoBean.page[current.index]}"/>
是 current.index 的索引
<ui:repeat varStatus=”current”>
用于选择每一对 Cliente-List<Carrito>。
现在的问题。每次在数据表中选择一个页面时,我都会得到一个 ClassCastException。我有一个样本,有两个客户,一个有三张钞票,另一个有六张钞票。每张桌子都显示五张钞票,所以当分页的一张显示在第二位时,我无法分页,页脚被锁定。
这是代码,
<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;
}
}
}