P:dialog excluir com Primefaces

3 respostas
C
Amigos tenho uma p:dataTable com um botao excluir, quando clico nesse botão aparece um p:dialog para confirmar a exclusão. O problema é que a variável que utilizo pra excluir esta vindo null. XHTML:
<p:dataTable id="dtCarreta" value="#{carretaMBean.carretas}" lazy="true" var="item"
                                 paginator="true" rows="5"
                                 emptyMessage="#{msgs.dtVazia}" rowsPerPageTemplate="5,10,15"
                                 selection="#{carretaMBean.selectedCarretas}"
                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}
                                 {PageLinks}
                                 {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"
                                 rowIndexVar="rowIx">
                        <f:facet name="header">
            <p:commandButton id="btnExcluirCarreta" value="#{msgs.cbtExcluirCarreta}"
                                             image="ui-icon ui-icon-close" oncomplete="excluir(xhr, status, args)"
                                             action="#{carretaMBean.excluir}">
                            </p:commandButton>
                        </f:facet>
             .........
           </p:dataTable>

          <!-- Painel que aparece quando clicar o botão excluir -->
                            <p:confirmDialog id="excluirCarreta" message="#{msgs.optLabelMsgExclusaoCarreta}"
                                             width="350" showEffect="explode" hideEffect="explode"
                                             header="#{msgs.optLabelMsgConfirmarCarreta}" severity="alert"
                                             widgetVar="confirmation" modal="true">
                                <p:commandButton id="cbtSim" value="#{msgs.cbtSim}"
                                                 action="#{carretaMBean.doRemoveListaCarretas}"
                                                 image="ui-icon-check" update="dtCarreta, msgs"
                                                 oncomplete="confirmation.hide()"
                                                 style="left: 30%;">
                                </p:commandButton>

                                <p:commandButton value="#{msgs.cbtNao}" image="ui-icon-cancel"
                                                 onclick="confirmation.hide()" type="button" style="left: 35%;"/>
                            </p:confirmDialog>
Bean
public void doRemoveListaCarretas() {
        if (selectedCarretas.length != 0) {
            carretaDAO.removeListaCarreta(selectedCarretas);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro excluido com sucesso"));
        }
    }
DAO
//    Método que remove o Carreta usando o método removePojo do GenericDAO;
    public void removeCarreta(Carreta carreta) {
        removePojo(carreta);
    }
// Método que remove as carretas selecionadas;
    public void removeListaCarreta(Carreta[] selectedCarretas) {
        if (selectedCarretas != null) {
            for (int i = 0; i < selectedCarretas.length; i++) {
                this.removeCarreta(selectedCarretas[i]);
            }
        }
    }

Alguél saberia me falar o que devo fazer para a selectedCarretas nao vir nula???

Abraço.

3 Respostas

F

Neste ponto…

vc tem que retirar a action do commandButton…

<p:commandButton id="btnExcluirCarreta" value="#{msgs.cbtExcluirCarreta}"  
                                             image="ui-icon ui-icon-close" oncomplete="excluir(xhr, status, args)"  
                                             action="#{carretaMBean.excluir}">  
                            </p:commandButton>

coloca este código no corpo do commandButton para setar a carreta selecionada

<f:setPropertyActionListener target="#{carretaMBean.carretaSelecionada}" value="item" />

[]´s

C

Cara não funcionou. Fiz o que vc sugeriu e nada. Mas alguma dica?

C

Peesoal o que tá acontecendo é o seguinte: Esta valorizando apartir do segundo registro selecionado na lista. Por exemplo, se eu selecionar os regtistro Teste 1 e Teste 2, irá excluir só o rgistro Teste 2. Por isso que se eu selecionar só um registro nao excloui nada.
Alguém tem alguma ideia do que pode ser?

Criado 29 de agosto de 2011
Ultima resposta 30 de ago. de 2011
Respostas 3
Participantes 2