ConfirmDialog - Primefaces

1,044 views
Skip to first unread message

Leonardo Ribeiro

unread,
Feb 17, 2012, 12:34:23 PM2/17/12
to jav...@googlegroups.com
Pessoal,

Tenho uma datagrid e uma das colunas tenho um botão de exclusão, esse botão (fonte abaixo) funciona 100%

<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton  action="#{clienteService.remove}"  icon="ui-icon-trash" ajax="false" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>

Só que precisava de uma confirmação antes de excluir, daí eu alterei o código acima para chamar um ConfirmDialog (abaixo)

<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton type="button" onclick="confirmation.show()" icon="ui-icon-trash" ajax="false" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>

E o confirmDialog

<p:confirmDialog  message="Deseja realmente excluir este registo?" closable="false" header="Aviso" severity="alert" widgetVar="confirmation">  
     <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" process="@this" action="#{clienteService.remove}"/>  
        <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>  
</p:confirmDialog>  

Só que agora ele não exclui, no caso o "selectedEntity" está null no método remove()

--
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Rafael Pestano

unread,
Feb 17, 2012, 12:48:33 PM2/17/12
to jav...@googlegroups.com
Olá,

tenta com oncomplete invés de onclick

<p:commandButton type="button" oncomplete="confirmation.show()" icon="ui-icon-trash" ajax="true" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF"> 
 
--
Att, 

Rafael M. Pestano

Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
Graduando em Ciência da Computação UFRGS

@realpestano


De: Leonardo Ribeiro <leojr...@gmail.com>
Para: jav...@googlegroups.com
Enviadas: Sexta-feira, 17 de Fevereiro de 2012 15:34
Assunto: [javasf] ConfirmDialog - Primefaces

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil


Rafael Pestano

unread,
Feb 17, 2012, 12:50:11 PM2/17/12
to jav...@googlegroups.com
outra coisa que vai precisar é tirar o type="button" pois o mesmo não faz submit e como consequencia <f:setPropertActionListener não será disparado (eu acho)
 
--
Att, 

Rafael M. Pestano

Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
Graduando em Ciência da Computação UFRGS

@realpestano


De: Rafael Pestano <rmpe...@yahoo.com.br>
Para: "jav...@googlegroups.com" <jav...@googlegroups.com>
Enviadas: Sexta-feira, 17 de Fevereiro de 2012 15:48
Assunto: Re: [javasf] ConfirmDialog - Primefaces

Leonardo Ribeiro

unread,
Feb 17, 2012, 1:20:43 PM2/17/12
to jav...@googlegroups.com
Se eu coloco ajax = "true" ele não executa o método (isso para qualquer commandButton) até abri uma thread aqui com esse tópico...
Se eu tirar o type="button" o meu ConfirmDialog "pisca" na tela...(um tópico que abri aqui tbm)...

2012/2/17 Rafael Pestano <rmpe...@yahoo.com.br>

Ednardo Rubens Matos Ignácio

unread,
Feb 18, 2012, 8:15:15 AM2/18/12
to jav...@googlegroups.com
Tire type="button", mude de onclick para oncomplete, tire ajax="false" e adicione process="@this"

--
Ednardo Rubens
Analista de Sistemas
Email: ednard...@gmail.com

Linkedin: http://br.linkedin.com/in/ednardorubens


Leonardo Ribeiro

unread,
Feb 19, 2012, 11:20:50 AM2/19/12
to jav...@googlegroups.com
Fiz o sugerido pelo colega

<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton concomplete="confirmation.show()" icon="ui-icon-trash" process="@this" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>

meu confirmDialog

<h:form id="dlg">  
<p:confirmDialog  message="Deseja realmente excluir este registo?" closable="false" header="Aviso" severity="alert" widgetVar="confirmation">  
    <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" process="@this" action="#{clienteService.remove}"/>  
        <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>  
</p:confirmDialog>  
</h:form>

Esta em outro FORM fora do FORM da pagina principal (mas no mesmo xhtml)...chama o método remove


public void remove() throws Exception {
try {
((XptoUseCase) getUseCase()).remove(selectedEntity);
} catch (Exception e) {
FacesUtils.addErrorMessage(e.getMessage());
}
}

Mas o selectedEntity chega null (no caso deveria selecionar o selectedEntity quando se clica no botão - isso funcionava antes de eu ter que confirmar com o ConfirmDialog)



2012/2/18 Ednardo Rubens Matos Ignácio <ednard...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Junior-®

unread,
Feb 17, 2012, 2:25:09 PM2/17/12
to jav...@googlegroups.com
Qual é o escopo do seu "clienteService" ? Para funcionar não pode ser de Request.
Se for de request, quando vc esta clicando no primeiro botão da "datatable" ele esta enviando o registro para o clienteService e acabando a requisição, abre o dialog de confirmação. Depois quando vc clica em "sim" é uma nova requisição, com isso o seu objeto enviado foi perdido, que é o que esta acontecendo.

Outra coisa, sua requisição tem que ser ajax=true, se vc ficar ajax=false ele vai perder porque vai fazer uma requisição completa.
Se vc fizer o seguinte em qualquer escopo sem ser o de request vai funcionar:

<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton oncomplete="confirmation.show()" icon="ui-icon-trash" ajax="true" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>

E o confirmDialog

<p:confirmDialog  message="Deseja realmente excluir este registo?" closable="false" header="Aviso" severity="alert" widgetVar="confirmation">  
     <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" process="@this" action="#{clienteService.remove}"/>  
        <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>  
</p:confirmDialog> 



--
Atenciosamente,
Nei Alcantara Junior

Leonardo Ribeiro

unread,
Feb 19, 2012, 5:14:46 PM2/19/12
to jav...@googlegroups.com
Junior,

O clienteService tem escopo "session".
Eu não coloquei explicitamente o ajax="true" porque esse é o valor padrão no Primefaces.
Mas enfim, fiz o que vc sugeriu e o selectedEntity permanece null quando eu confirmo (botão SIM) do ConfirmDialog

Abaixo segue o meu XHTML para vocês, de repente estou fazendo algo errado. Reparem que tem o botão Excluir e Alterar, no Alterar o selectedEntity é setado corretamente no Excluir tbm funcionava quando eu mandava excluir direto, agora tendo a confirmação que chega null no método remove



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      xmlns:h="http://java.sun.com/jsf/html
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html"/>
<h:form id="frmPage">
<p:outputPanel id="pForm" style="background-color:#B0C4DE">
<b><i><font size="4" color="#0627D2"> Cadastros - Clientes</font></i></b>
<p:toolbar style="background-color:#B0C4DE">
<p:toolbarGroup>
<p:commandButton id="btnShowFilter" value="Config. filtros" icon="ui-icon-zoomin" style="color:#0066FF;background-color:#F0F8FF" ajax="false" actionListener="#{clienteService.consultar}" disabled="#{clienteService.addUpdtState}"/>
<p:commandButton id="btnConsultar" value="Consultar" ajax="false" icon="ui-icon-search" actionListener="#{clienteService.pesquisar}" style="color:#0066FF;background-color:#F0F8FF" disabled="#{clienteService.addUpdtState}"
/>
<p:separator/>
<p:commandButton id="btnNovo" ajax="false" icon="ui-icon-plusthick" actionListener="#{clienteService.novo}" value="Novo" style="color:#0066FF;background-color:#F0F8FF" disabled="#{clienteService.addUpdtState}"/>
<p:separator/>
<p:commandButton id="btnImprimir" value="Imprimir" icon="ui-icon-print" style="color:#0066FF;background-color:#F0F8FF"/>
</p:toolbarGroup>
<p:toolbarGroup align="right">
<p:commandButton id="btnFecharList" value="Sair do cadastro" ajax="false" style="color:#FF0000;background-color:#F0F8FF" actionListener="#{clienteService.closePage}" icon="ui-icon-closethick" disabled="#{clienteService.addUpdtState}"/>
</p:toolbarGroup>
</p:toolbar>
<p:dataTable id="dtCliente" var="cliente" value="#{clienteService.clientes}" emptyMessage="sem registros" rendered="#{clienteService.gridState}"
paginator="true" rows="10" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
            rowsPerPageTemplate="10,20,30" selection="#{clienteService.selectedEntity}" selectionMode="single" rowKey="#{cliente.id}"
            rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}" rowIndexVar="rowIx">
<p:column headerText="Código" style="max-width: 2%; min-width: 2%">
#{cliente.codigo}
</p:column>
<p:column headerText="Nome">
#{cliente.nome}
</p:column>
<p:column headerText="Fantasia">
#{cliente.fantasia}
</p:column>
<p:column headerText="Cidade">
#{cliente.cidade}
</p:column>
<p:column headerText="Estado" style="max-width: 2%; min-width: 2%">
#{cliente.estado}
</p:column>
<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton oncomplete="confirmation.show()" icon="ui-icon-trash" ajax="true" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
<p:commandButton action="#{clienteService.editar}" icon="ui-icon-pencil" ajax="false" title="Alterar o Cliente" style="color:#0066FF;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:outputPanel id="pFiltros" rendered="#{clienteService.consultState}">
<h:outputLabel value="Filtros para Consulta" style="font-size:16px;font-style:italic;font-weight:bold;color:#FFFFFF"/>
<h:panelGrid columns="2">
   <h:outputLabel for="tfCodigo" value="Código" style="font-size:14px;color:#0627D2">
    <p:focus/>
   </h:outputLabel> 
<p:inputText id="tfCodigo"  maxlength="7" size="7" value="#{clienteService.codigoFilter}"/>
   <h:outputLabel for="tfFNome" value="Nome" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFNome"  maxlength="50" size="50" value="#{clienteService.nomeFilter}"/>
<h:outputLabel for="tfFFantasia" value="Fantasia" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFFantasia"  maxlength="20" size="20" value="#{clienteService.fantasiaFilter}"/>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton id="btnFilterConsultar" icon="ui-icon-search" style="color:#0066FF;background-color:#F0F8FF" value="Confirmar filtros e executar consulta" ajax="false" actionListener="#{clienteService.pesquisar}"/>
<p:commandButton id="btnCancel" icon="ui-icon-arrowreturnthick-1-w" immediate="true" style="color:#FF0000;background-color:#F0F8FF" value="Cancelar filtros e voltar para listagem" ajax="false" actionListener="#{clienteService.closeConsultForm}"/>
</h:panelGrid>
</p:outputPanel>
<p:outputPanel id="pFromAddUpdt" rendered="#{clienteService.addUpdtState}">
<h:outputLabel value="Inserindo/Alterando Cliente" style="font-size:16px;font-style:italic;font-weight:bold;color:#FFFFFF"/>
<h:panelGrid columns="3">
   <h:outputLabel for="tfCnpjCpf" value="CNPJ/CPF" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfCnpjCpf" value="#{clienteService.cnpjCpf}" maxlength="20" size="20" required="true" requiredMessage="CNPJ/CPF é obrigatório">
    <p:ajax event="change" process="@this" update=":pFromAddUpdt; :grow" listener="#{clienteService.verificaCpfCnpj}"/>
    <p:focus/>
   </p:inputText>
   <h:message  for="tfCnpjCpf" errorClass="error"/>
   <h:outputLabel for="tfNome" value="Nome" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfNome" value="#{clienteService.nome}" maxlength="50" size="50" required="true" requiredMessage="Nome é obrigatório"/>
   <h:message  for="tfNome" errorClass="error"/>
<h:outputLabel for="tfFantasia" value="Fantasia" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFantasia" value="#{clienteService.fantasia}" maxlength="20" size="20" required="true" requiredMessage="Fantasia é obrigatório"/>
   <h:message  for="tfFantasia" errorClass="error"/>
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton icon="ui-icon-disk" id="btnSalvar" ajax="false" actionListener="#{clienteService.save}" value="Salvar" style="color:#0066FF;background-color:#F0F8FF"/>
<h:outputLabel value="" />
<p:commandButton id="btnCancelar" icon="ui-icon-circle-close" ajax="false" actionListener="#{clienteService.closeConsultForm}" value="Cancelar" immediate="true" style="color:#FF0000;background-color:#F0F8FF"/>
</h:panelGrid>
</p:outputPanel>
</p:outputPanel>
</h:form>
<h:form id="dlg">  
<p:confirmDialog  message="Deseja realmente excluir este registo?" closable="false" header="Aviso" severity="alert" widgetVar="confirmation">  
    <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" process="@this" action="#{clienteService.remove}"/>  
        <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>  
</p:confirmDialog>  
</h:form>
</html>



2012/2/17 Junior-® <neialcant...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Ednardo Rubens Matos Ignácio

unread,
Feb 22, 2012, 12:45:31 PM2/22/12
to jav...@googlegroups.com
vc digitou concomplete ou oncomplete ?

Leonardo Ribeiro

unread,
Feb 22, 2012, 3:24:38 PM2/22/12
to jav...@googlegroups.com
onComplete

2012/2/22 Ednardo Rubens Matos Ignácio <ednard...@gmail.com>
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Leonardo Ribeiro

unread,
Feb 22, 2012, 3:24:46 PM2/22/12
to jav...@googlegroups.com
oncomplete

2012/2/22 Leonardo Ribeiro <leojr...@gmail.com>

Douglas

unread,
May 15, 2013, 9:51:24 PM5/15/13
to jav...@googlegroups.com
Leonardo, boa noite!
Você conseguiu resolver esse problema? Se conseguiu, posta a resposta aí, estou com o mesmo problema..

Obrigado.

Carlos Martins

unread,
May 16, 2013, 11:08:07 AM5/16/13
to jav...@googlegroups.com
Num sei vocês mais eu não vi ele atualizar o confirmDialog com o objeto selecionado.

<p:commandButton id="selectDelete" update="confirmDlg" ( se o dialog ou confirmDialog estiver no mesmo form ) 

OU

<p:commandButton id="selectDelete" update=":outroForm:confirmDlg:" ( se o dialog ou confirmDialog estiver em outro form ) 

Tenta ai..

--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para javasf+un...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/javasf?hl=pt-BR.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



 

 
Reply all
Reply to author
Forward
0 new messages