confirmDialog para exclusão no BD

9 respostas
ArianeRebellato

Tenho um sério problema com os componentes do PrimeFaces…quando quero conectar eles ao BD nunca funciona! Tenho certeza que não é no meu método, pois o mesmo foi testado e está funcionando. Estou tentando fazer com que seja excluído do BD um registro usando o confirmDialog mas nada acontece. O código da view tá meio longo, mas achei melhor colar ele inteiro caso alguém possa me ajudar…

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">

    <h:head>
        <link rel="stylesheet" type="text/css"  href="estilo.css"/>
        <title>Controle de Usuários</title>
    </h:head>
    <h:body>
        <div id="geral">
            <div id="content">
                <div id="cabecalho">
                    <div id="intCab">Controle de Usuários</div><!--fim intCab--><br />
                    <div id="subTitulo">
                        <h:form>Você está em:&nbsp;&nbsp;
                            <h:outputLink value="index.xhtml" styleClass="umlink" >
                                <f:verbatim>Home</f:verbatim>
                            </h:outputLink>&nbsp;&nbsp;>>&nbsp;&nbsp;
                            <h:outputLink value="remover.xhtml" styleClass="doislink" >
                                <f:verbatim>Remover</f:verbatim>
                            </h:outputLink>
                        </h:form>
                    </div><!--fim subtitulo-->
                </div><!--fim cabecalho-->
                <div id="conteudo">
                    <div id="contPrincipal">
                        <h:form id="form">

                            <table width="620" align="center">
                                <tr>
                                    <td colspan="2" align="right"><h:outputText value="Escolha o usuário a ser removido e clique em [Remover]" /></td>
                                </tr>
                            </table>
                            <br />
                            <br />
                            <!--Início tabela de lista-->

                            <h:dataTable id="formulario" value="#{usuarioBeans.usuarios}" var="user" styleClass="orders" headerClass="ordersHeader" columnClasses="oddColumn" rowClasses=" eveRow, oddRow">
                                <h:column>
                                    <f:facet name="header">
                                        Id
                                    </f:facet>
                                    #{user.id}
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        Nome
                                    </f:facet>
                                    #{user.nome}
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        Login
                                    </f:facet>
                                    #{user.login}
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        Data de nascimento
                                    </f:facet>
                                    #{user.datanascimento}
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        Observações
                                    </f:facet>
                                    #{user.observacoes}
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                    </f:facet>    

                                    <h:panelGrid columns="1" cellpadding="5">

                                        <!-- Abaixo temos o botão Remover com a propriedade onclick contendo o nome do modal 
                                        e acessando um método de abri-lo que é o show, também existe o hide que é para feixá-lo.-->
                                        <p:commandButton value="Remover" 
                                                         image="ui-icon ui-icon-cancel"
                                                         onclick="confirmation.show()" 
                                                         type="button" 
                                                         style="width: 85px; height: 30px; font-size: 12px">
                                            <!-- Abaixo temos o setPropertyActionListener que é utilizado para pegar o objeto user
                                            e setar no objeto user la do bean, para posteriomente remover ele-->
                                            <f:setPropertyActionListener value="#{user}" target="#{usuarioBeans.user}"/>
                                        </p:commandButton>
                                    </h:panelGrid>
                                </h:column> 
                            </h:dataTable> <!--Fim tabela de lista--> 
                        </h:form>

                        <!-- Abaixo temos um modal de confirmação de exclusão,
                                   repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
                        <h:form>
                            <p:confirmDialog message="Deseja realmente excluir este registro?"
                                             hideEffect="explode" 
                                             header="Aviso" 
                                             severity="alert" 
                                             widgetVar="confirmation" 
                                             modal="true">

                                <!--caso seja sim chamo o metodo remove, e fecho o modal com o oncomplete, 
                                tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                                <p:commandButton id="btnSim" 
                                                 value="Sim" 
                                                 oncomplete="confirmation.hide();" 
                                                 actionListener="#{usuarioBeans.remove}" 
                                                 process="@form" 
                                                 update="form:formulario" />

                                <!--caso seja não somente fecha o modal-->

                                <p:commandButton id="btnNao" 
                                                 value="Não" 
                                                 onclick="confirmation.hide();" 
                                                 type="button"/>

                            </p:confirmDialog>

                        </h:form>

                    </div><!--fim contPrincipal-->
                    <div id="lateral">
                        <br />
                        <br />
                        <br />
                        <f:view>
                            <h:form>
                                <h:outputLink value="index.xhtml" styleClass="link" >
                                    <f:verbatim>Home</f:verbatim>
                                </h:outputLink>
                                <br /><br />
                                <h:outputLink value="inserir.xhtml" styleClass="link" >
                                    <f:verbatim>Inserir</f:verbatim>
                                </h:outputLink>
                                <br /><br />
                                <h:outputLink value="buscar.xhtml" styleClass="link">
                                    <f:verbatim>Buscar</f:verbatim>
                                </h:outputLink>
                                <br /><br />
                                <h:outputLink value="listar.xhtml" styleClass="link">
                                    <f:verbatim>Listar</f:verbatim>
                                </h:outputLink>
                                <br /><br />
                                <h:outputLink value="atualizar.xhtml" styleClass="link">
                                    <f:verbatim>Atualizar</f:verbatim>
                                </h:outputLink>
                                <br /><br />
                                <h:outputLink value="remover.xhtml" styleClass="link">
                                    <f:verbatim>Remover</f:verbatim>
                                </h:outputLink>

                            </h:form>
                        </f:view>
                    </div><!--fim lateral-->
                </div><!--fim conteudo-->
                <div id="rodape">
                    <p>IFSul - 2011/2</p>
                    <p>TAP - Tópicos Avançados em Programação</p>
                    <p>Ariane Rebellato</p>
                    <p>&nbsp;</p>
                </div><!--fim rodape-->
            </div><!--fim content-->
        </div><!--fim geral-->
    </h:body>
</html>

9 Respostas

Hebert_Coelho

Vc clica no botão e nada acontece? É isso?

ArianeRebellato

Isso…é como se não chamasse o método remove()…

Hebert_Coelho

Tente trocar de actionListener="#{usuarioBeans.remove}" para action="#{usuarioBeans.remove}".

ArianeRebellato

nada…
;/
já tentei de td…pelo que vejo era pra tar funcionando…parece que ele não acessa o método…se eu coloco um botão normal exclui sem problemas…mas eu tenhoq ue apresentar um projeto com três componentes primefaces…mas to achando uma droga…nem é tão apresentável assim…e nenhum que eu testei até agora funcionou legal…isso é comum?

Hebert_Coelho

Não é normal não.

Faz um teste. Tenta arrancar esse monte de div e veja se funciona o botão. Mas mantem como action.

ArianeRebellato

Não funcionou…se comporta da mesma forma…desisto será? Achei que este componente ia ser o mais fácil de fazer funcionar :frowning:

W

Bom dia, onde esta a ação (action) que chama seu método no botão?

Exemplo:

<p:commandButton value="Remover" action="#{usuariosBeans.remove} image="ui-icon ui-icon-cancel" onclick="confirmation.show()" type="button" style="width: 85px; height: 30px; font-size: 12px"> <!-- Abaixo temos o setPropertyActionListener que é utilizado para pegar o objeto user e setar no objeto user la do bean, para posteriomente remover ele--> <f:setPropertyActionListener value="#{user}" target="#{usuarioBeans.user}"/> </p:commandButton>

Tira o actionListener do botão sim ou não.
Eu utilizo muito o que você esta tentando fazer, mas com javascript direto.

Ex: <p:commandButton title="Excluir" image="ui-icon ui-icon-close" action="#{cidadeBean.delete}" onclick="return confirm('Tem certeza de excluir a #{cidade.nome}?');"> <f:setPropertyActionListener target="#{cidadeBean.cidade}" value="#{cidade}" /> </p:commandButton>

Obrigado espero ter ajudado.

ArianeRebellato

wellington, eu preciso usar o componente confirmDialog neste projeto, por isso que eu chamo o método no botão do sim…se o usuário confirma a exclusão, o método remove() é acionado…mas obrigada pela dica!

luxu

Bom dia, num sei se vc resolveu a questão se não coloque ajax=“false” q deve resolver

Criado 28 de novembro de 2011
Ultima resposta 17 de dez. de 2011
Respostas 9
Participantes 4