Primefaces:在没有抛出异常时更新组件

时间:2011-07-24 11:59:13

标签: datatable conditional primefaces

我有一个数据表,我从每一行插入值,然后我迭代该集合,如果我有任何问题我只是抛出一个RollBackException,问题是如果我得到这个异常我不想更新数据表上的信息我希望保留以前的值或不更新数据表组件,如果我没有异常,请正确刷新表,这是我的代码:

<p:dataTable value="#{creditoController.ordenes}" var="orden"
                            selectionMode="single" clickSelect="true" id="items"
                            emptyMessage="No info."
                            rendered="#{creditoController.mostrarInfoCliente}"
                            selection="#{creditoController.selectedOrden}"
                            rowSelectListener="#{creditoController.onRowSelectNavigate}">
                            <p:column>
                                <f:facet name="header">Fecha</f:facet>
                                <h:outputText value="#{orden.fechaFacturacion}">
                                    <f:convertDateTime pattern="dd-MM-yyyy" />
                                </h:outputText>
                            </p:column>
                            <p:column>
                                <f:facet name="header">No. Factura</f:facet>
                                <h:outputText value="#{orden.numeroFactura}">
                                    <f:convertDateTime pattern="dd-MM-yyyy" />
                                </h:outputText>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Valor Factura</f:facet>
                                <h:outputText value="#{orden.monto}" />
                            </p:column>
                            <p:column>
                                <f:facet name="header">Cancelado</f:facet>
                                <h:outputText value="#{orden.totalCancelado}" />
                            </p:column>
                            <p:column>
                                <f:facet name="header">Por Pagar</f:facet>
                                <h:outputText value="#{orden.monto - orden.totalCancelado}" />
                            </p:column>
                            <p:column>
                                <f:facet name="header">Tipo de Pago</f:facet>
                                <h:selectOneRadio value="#{orden.tipoCancelacion}"
                                    rendered="#{orden.monto - orden.totalCancelado > 0}">
                                    <f:selectItem itemLabel="Total" itemValue="T" />
                                    <f:selectItem itemLabel="Abono" itemValue="A" />
                                </h:selectOneRadio>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Valor a Pagar</f:facet>
                                <p:inputText value="#{orden.valorAPagar}" size="6"
                                    rendered="#{orden.monto - orden.totalCancelado > 0}" />
                            </p:column>
                        </p:dataTable>

这是我的命令按钮操作:

for (Orden o : ordenes) {
        if (null != o.getTipoCancelacion()) {
            HistorialPagos hp = new HistorialPagos();
            if ("T".equals(o.getTipoCancelacion())) {
                hp.setValor(o.getMonto());
                o.setTotalCancelado(o.getMonto());
            } else {
                if (o.getValorAPagar() + o.getTotalCancelado() < o
                        .getMonto()) {
                    hp.setValor(o.getValorAPagar());
                    o.setTotalCancelado(o.getTotalCancelado()
                            + o.getValorAPagar());
                } else {
                    throw new RollbackException(
                            "El valor a pagar es mayor al valor adeudado, para la factura "
                                    + o.getNumeroFactura() + ".");
                }
            }
            hp.setNumeroFactura(o.getNumeroFactura());
            hp.setTipoPago(o.getTipoCancelacion());
            hp.setFecha(new Date());
            historialEJB.create(hp);
        }
        update(o);
    }

非常感谢任何推荐。

0 个答案:

没有答案