1

这是场景,我有一个数据库表,其中包含客户已支付和未支付的账单。在托管 bean 中,这由 Map<Cliente, List<Carrito> 表示,其中 Cliente 是每个客户,List<Carrito> 是未支付的账单列表。

我通过查询获得了这张地图,同时我计算了客户在地图上的账单金额。此计数器值用于初始化属性(int[] 页)。

该地图显示在每个客户的一个丰富的数据表中。每个数据表都是分页的,我在它们的页脚中设置,

<rich:dataScroller page="#{adminCarritoBean.page[current.index]}"/>

是 current.index 的索引

<ui:repeat varStatus=”current”&gt;

用于选择每一对 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;
    }
}
}
4

0 回答 0