Primefaces: обновление компонента, когда не генерируется исключение - PullRequest
1 голос
/ 24 июля 2011

У меня есть дата, я получаю значения, вставленные из каждой строки, затем перебираю эту коллекцию, если у меня возникают проблемы, я просто выкидываю 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);
    }

Большое спасибо за любую рекомендацию.

...