Confirm Dialog

Segue o codigo , no lugar do command button excluir gostaria de por um confirm dialog , mais nao consigui seguindo o modelo do primefaces/showcase.

[code]<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition template="/templates/principal.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p=“http://primefaces.org/ui”>

<ui:define name="title">
	Listagem de Carros
</ui:define>

<ui:define name="center">
	<h:form>
		<p:growl id="growl" showDetail="true" sticky="false" life="2000" /> 
		
		<p:panel id="panel" header="Lista de carros" footer="Rodapé tabela">
			<p:commandButton id="btnCadastro" value="Novo" 
				action="#{carroMB.doNovoAction}" ajax="false" />
			
			<p:dataTable id="tblCarro" value="#{carroMB.listaCarro}" 
				var="carro" paginator="true" resizableColumns="true" 
				rows="5" selectionMode="single" rowKey="#{carro}" emptyMessage="Sem registros">
	
			
				<p:column>
					<f:facet name="header">Nome</f:facet>
					<p:outputLabel value="#{carro.nome}"/>
				</p:column>

				<p:column>
					<f:facet name="header">Ação</f:facet>

					<p:commandButton id="btnEditar" value="Editar" 
						action="#{carroMB.doEditarAction}" ajax="false">
						<f:setPropertyActionListener
							target="#{carroMB.carro}" value="#{carro}" />
					</p:commandButton>
					
					<p:spacer height="10"/>					
					
					[color=red]<p:commandButton id="btnExcluir" value="Excluir" 
						action="#{carroMB.doExcluirAction}" ajax="false">
						<f:setPropertyActionListener
							target="#{carroMB.carro}" value="#{carro}" />
					</p:commandButton>[/color]
					
				</p:column>
	
			</p:dataTable>
		</p:panel>
	</h:form>
</ui:define>

</ui:composition>[/code]

se alguem conseguir adaptar o trecho pra um confirm dialog… de qualquer forma obrigado!

No caso é esse trecho que tenho q passar para confirm dialog

[color=red]
<p:commandButton id=“btnExcluir” value=“Excluir"
action=”#{carroMB.doExcluirAction}" ajax=“false”>
<f:setPropertyActionListener
target="#{carroMB.carro}" value="#{carro}" />
</p:commandButton>

                </p:column>  

[/color]

alguem… pessoal concertz vcs ja usaram isso !

Tente algo assim:

[code]<p:commandButton value=“Excluir” onclick=“confirmaExclusao.show()”>

<p:confirmDialog id=“confirmaExclusao” message=“Voce deseja realmente excluir?” header=“Confirmação” severity=“alert” widgetVar=“confirmaExclusao”>

    <p:commandButton id="confirmaBtn" value="Sim" oncomplete="confirmaExclusao.hide()"  
                action="#{carroMB.doExcluirAction}" >
                        <f:setPropertyActionListener  
                            target="#{carroMB.carro}" value="#{carro}" />    
    </p:commandButton>

    <p:commandButton id="recusaBtn" value="Não" onclick="confirmaExclusao.hide()"/>   

</p:confirmDialog> [/code]

Resolvido.

felipe_gdr vc é o cara , muito obrigado de verdade , um botão com tamanho poder não pode ser dado ao usuário sem confirmação VLW!

O meu ta excluindo sempre o ultimo contato !

Como que vcs fizeram ???

Poderiam mostrar a Xhmtl toda XD

Bom dia pessoal, estou tentando implantar o código do felipe_gdr no meu projeto, mas
quando eu clico em salvar, acontece que a tela fica amarelada e sem ação.

Segue o meu código:

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
   <h:head>
        <title>Clínica Odontológica</title>
    </h:head>
    <h:body>
        <ui:composition template="./template.xhtml">
            <ui:define name="content">
                <center>   
              <h:form>
             <p:fieldset legend="Formulário das Especialidades" >

               
                 <f:view>
                     <h:form>
                        
                         <h:panelGrid columns="2">
                            
                             <h:outputLabel value="Nome:" for="nome" />
                             <h:inputText id="nome" value="#{especialidadesManagedBean.especialidades.nome}"
                                          title="Nome" required="true" requiredMessage="O campo nome é obrigatório."/>
                         </h:panelGrid>
                     </h:form>
                 </f:view>

                                 
                 <p:commandButton value="Salvar"  onclick="confirmaInsercao.show();" >  

                              <p:confirmDialog id="confirmaInsercao" message="Você deseja realmente salvar?" header="Confirmação" severity="alert" widgetVar="confirmaInsercao">  
                  
                              <p:commandButton  value="Sim" oncomplete="confirmaInsercao.hide()"  
                                                action="#{especialidadesManagedBean.inserirE()}" >
                               <f:setPropertyActionListener  
                                target="#{especialidadesManagedBean.especialidades}" value="#{especialidades}" />    
                                </p:commandButton>

                                 <p:commandButton  value="Não" onclick="confirmaInsercao.hide();"/>   

                               </p:confirmDialog> 
                               </p:commandButton>

            



               

              
               
                
                    
                
 
                    
                  
                   <center>
               <p:commandButton value="Limpar" ajax="true" immediate="true" type="reset"/>
              </center>
                      
                         </p:fieldset>
       
                  </h:form>
                    
                </center>
                
                 
            </ui:define>
        </ui:composition>
    </h:body>
</html>

Você colocou o p:dialog dentro do p:command button. Tente tirar ele de dentro do p:command, coloque-o no finalzinho da página, por exemplo.

[quote=MarcolaLipe10]O meu ta excluindo sempre o ultimo contato !

Como que vcs fizeram ???

Poderiam mostrar a Xhmtl toda XD[/quote]

Conseguiu resolver Marco?

Sim sim …
Se alguem qr que eu disponibilizo eu coloco aqui !!! :smiley:

Bom dia pessoal!
Muito obrigado por responder felipe_gdr
Tentei como você sugeriu, mas continua na mesma,
O estranho que após clicar em salvar, a tela de confirmação
aparece, só que toda a tela fica amarelada e sem ação

E ai MarcolaLipe10, tudo bom?
Cara, se puder colocar seu código aqui, me ajudaria muito
Abraço.

Repara , que eu coloquei o Dialog abaixo do BODY …
Ta fora do corpo !

E a Bean , esta assim :

@ManagedBean(name=“fBean”)
@SessionScoped

[code] <p:dataTable id=“dataTable” var=“usuario” value="#{fBean.lista}"
sortMode=“multiple” rows=“7” paginator="true"
styleClass=“fonteMenor”>

					<f:facet name="header">
						<font color="blue" size="20px">Funcionários</font>
					</f:facet>

                                            <p:column headerText="Excluir" width="0">
						<p:commandButton value="Excluir" onclick="confirmation.show()"
							icon="ui-icon-trash">
							<f:setPropertyActionListener target="#{fBean.usuario}"
								value="#{usuario}" />
						</p:commandButton>

					</p:column>
               </p:dataTable>

</h:body>
<p:dialog id=“confirmDialog” header=“Atenção !” severity="alert"
widgetVar=“confirmation” showEffect=“explode” hideEffect="bounce"
appendToBody=“true” modal=“true”>

	<h:outputText value="Você deseja excluir esse Funcionário ?" />
	<br />
	<br />

	<p:commandButton value="Sim" oncomplete="confirmation.hide()"
		update="forme" action="#{fBean.excluir}" />

	<p:commandButton id="decline" value="Ainda Não" onclick="confirmation.hide()" type="button" />
</p:dialog>[/code]

Obrigado pela ajuda felipe_gdr e MarcolaLipe10, mas ainda não consegui resolver :confused:
Vou tentando aqui, caso de certo, posto aqui, obrigado pela ajuda.

Bom dia pessoal, realmente não consegui fazer funcionar a mensagem de confirmação do meu código,
gostaria da ajuda de vocês, segue o código :


<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
   <h:head>
        <title>Clínica Odontológica</title>
    </h:head>
    <h:body>
        <ui:composition template="./template.xhtml">
            <ui:define name="content">
                <center>   
              <h:form>
             <p:fieldset legend="Formulário das Especialidades" >

               
                 <f:view>
                     <h:form>
                        
                         <h:panelGrid columns="2">
                            
                             <h:outputLabel value="Nome:" for="nome" />
                             <h:inputText id="nome" value="#{especialidadesManagedBean.especialidades.nome}"
                                          title="Nome" required="true" requiredMessage="O campo nome é obrigatório."/>
                         </h:panelGrid>
                     </h:form>
                 </f:view>

                            
             <p:commandButton value="Salvar"  onclick="confirmaInsercao.show();" >  

                              <p:confirmDialog id="confirmaInsercao" message="Você deseja realmente salvar?" header="Confirmação" severity="alert" widgetVar="confirmaInsercao">  
                  
                              <p:commandButton  value="Sim" oncomplete="confirmaInsercao.hide()"  
                                                action="#{especialidadesManagedBean.inserirE()}" rendered="true">
                               <f:setPropertyActionListener  
                                   target="#{especialidadesManagedBean.especialidades}" value="#{especialidades}" />    
                                </p:commandButton>

                                 <p:commandButton  value="Não" onclick="confirmaInsercao.hide();"/>   

                               </p:confirmDialog> 
               </p:commandButton>
                              

            



               

              
               
                
                    
                
 
                    
                  
                   <center>
               <p:commandButton value="Limpar" ajax="true" immediate="true" type="reset"/>
              </center>
                      
                         </p:fieldset>
       
                  </h:form>
                    
                        
                    
                </center>
                
                 
            </ui:define>
        </ui:composition>
    </h:body>
    
    
</html>

Desde ja, muito obrigado.

Roberto

Espero ter ajudado :smiley:

Muito obrigado por ter respondido MarcolaLipe10!
Cara, deu quase certo, eu só queria que quando não houvesse nenhum dado inserido no formulário e clicasse no botão salvar,
aparecesse a mensagem pedindo para inserir igual está no formulário:

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <f:view>
   <h:head>
        <title>Clínica Odontológica</title>
    </h:head>
    <h:body>
        <ui:composition template="./template.xhtml">
            <ui:define name="content">
                <center>   
              <h:form>
             <p:fieldset legend="Formulário das Especialidades" >

               
                 
                     <h:form>
                        
                         <h:panelGrid columns="2">
                            
                             <h:outputLabel value="Nome:" for="nome" />
                             <h:inputText id="nome" value="#{especialidadesManagedBean.especialidades.nome}"
                                          title="Nome" required="true" requiredMessage="O campo nome é obrigatório."/>
                         </h:panelGrid>
                     </h:form>
                    
                      
                    
                            
                      <p:commandButton value="Salvar"  onclick="confirmaInsercao.show();" >  

                          <p:dialog id="confirmaInsercao" header="Deseja realmente salvar?" widgetVar="confirmaInsercao" showEffect="fade" hideEffect="explode">  
                               
                  
                              <p:commandButton  value="Sim" oncomplete="confirmaInsercao.hide()"  
                                                action="#{especialidadesManagedBean.inserirE()}" rendered="true"/>
                             

                                 <p:commandButton  value="Não" onclick="confirmaInsercao.hide();"/>   

                          </p:dialog>
                     </p:commandButton>
                              
                              
                              
                              
                              
                              

               <center>
               <p:commandButton value="Limpar" ajax="true" immediate="true" type="reset"/>
              </center>
                              
                    
                   
                              
                              
                              
                              
                      
            </p:fieldset>
                  
                  
                  
                  
       
           </h:form>
                    
                    <h:form>
                         <p:panel header="Registro de Especialidades">
                        <input type="hidden" value="#{especialidadesManagedBean.recuperar()}" name="carregarEspecialidades"/>
                        <p:dataTable id="tbEspecialidades"
                                     var="especialidadess" value="#{especialidadesManagedBean.especialidadess}"
                                     emptyMessage="Não há registros." 
                                     
                                     paginator="true" rows="5">
                            
                            <p:column headerText="Nome" filterBy="#{especialidadess.nome}">
                                <h:outputText value="#{especialidadess.nome}"/>
                            </p:column>
                            
                            <p:column>
                                 <f:facet name="header">
                                    <h:outputText value="Alterar"/>
                                </f:facet>
                             
                                <h:commandLink action="#{especialidadesManagedBean.alterarE()}"> 
                                    <h:graphicImage width="56" height="56" value="/Imagens/editar.png"  /> 
                              
                               </h:commandLink> 
                                                               
                                   
                                
                            </p:column>
                            <p:column>
                                 <f:facet name="header">
                                    <h:outputText value="Excluir"/>
                                </f:facet>
                               
                                <h:commandLink action="#{especialidadesManagedBean.removerE()}" > 
                                <h:graphicImage width="56" height="56" value="/Imagens/excluir.png" /> 
                                
                                
                                </h:commandLink> 
                                
                            </p:column>
                            
                       
                           
                            
                          </p:dataTable> 
                       
                           <h:panelGrid columns="2">
                             <p:panel header="Exportar dados"> 
                                <h:commandLink>  
                                    <p:graphicImage id="tpdf" value="/Imagens/pdf.png" />  
                                   <p:dataExporter type="pdf" target="tbEspecialidades"  fileName="Especialidades" />  
                               </h:commandLink> 
                              <p:tooltip for="tpdf" value="Exportar para pdf." showEffect="slide" hideEffect="fade" />    
                              
                               <h:commandLink>  
                                    <p:graphicImage id="txml" value="/Imagens/xml.png" />  
                                   <p:dataExporter type="xml" target="tbEspecialidades"  fileName="Especialidades" />  
                               </h:commandLink> 
                              <p:tooltip for="txml" value="Exportar para xml." showEffect="slide" hideEffect="fade" /> 
                       
                           </p:panel> 
                               
                                 
                       
                         
                     
                            </h:panelGrid>
                       
                        
                          
                    </p:panel>
                     
                    </h:form>           
                    
        </center>
                
                 
            </ui:define>
        </ui:composition>
    </h:body>
      
    </f:view>
</html>

Olha o managedBean:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import entidades.Especialidades;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.ListDataModel;
import sessao.EspecialidadesFacade;


/**
 *
 * @author Gimenes
 */
@ManagedBean 
@ViewScoped


public class especialidadesManagedBean implements java.io.Serializable{
    @EJB
    private EspecialidadesFacade especialidadesFacade;
    
    private ListDataModel especialidadess;

    public ListDataModel getEspecialidadess() {
        return especialidadess;
    }

    public void setEspecialidadess(ListDataModel especialidadess) {
        this.especialidadess = especialidadess;
    }
    
    
    
    
    
    private Especialidades especialidades;
    
    
    
    public String inserirE(){
       this.especialidadesFacade.create(especialidades);
       return null;
        
    }
    public String alterarE(){
        this.especialidadesFacade.edit(especialidades);
        return null;
    }
    
    public String removerE(){
        this.especialidadesFacade.remove(especialidades);
       
        return null;
    } 
    
   
  
    
    private void recuperarEspecialidades(){
        this.especialidadess = new ListDataModel(especialidadesFacade.recuperarTodos());
    }
    
    public void recuperar(){
        this.recuperarEspecialidades();
    }
    
    
    

    public Especialidades getEspecialidades() {
        if(especialidades ==null){
            especialidades = new Especialidades();
            
        }
        return especialidades;
    }

    public void setEspecialidades(Especialidades especialidades) {
        this.especialidades = especialidades;
    }
    
    
    
}

No mais está muito legal!

Ah, você saberia um método para que quando eu clico no botão alterar da dataTable, enviasse
os dados da linha para o formulário para serem alterados? Se não for pedir muito também,
gostaria de aprender a excluir os dados da dataTable pelo botão excluir da mesma.

Obrigado pela paciência!

Amigão nao entendi direito o que vc qr !!

Desculpa =(

Boa tarde MarcolaLipe10, blz?
Então, o que você me sugeriu antes deu certo, porém ficaria melhor
se o usuário clicasse em salvar com os campos vazios, ele retornaria
uma mensagem dizendo que o campo nome é obrigatório igual está
no formulário, segue o código:


<h:form>
                        
                         <h:panelGrid columns="2">
                            
                             <h:outputLabel value="Nome:" for="nome" />
                             <h:inputText id="nome" value="#{especialidadesManagedBean.especialidades.nome}"
                                          title="Nome" required="true" requiredMessage="O campo nome é obrigatório."/>
                         </h:panelGrid>
                     </h:form>

Agora sobre a dataTable, é um pouco mais complicado…
Na frente de cada registro da dataTable, tem os botões alterar e excluir.
O que eu queria que não estou conseguindo, é desenvolver métodos, no
caso do botão alterar, enviar os dados do registro para o campo formulário nome,
para depois serem alterado, e no caso do botão excluir, excluir o registro quando clicar
no botão excluir.

Se puder me dar uma direção sobre isso, ficaria muito grato.

Valeu pela força.

você qr alterar um componente e abrir dentro de um dialog um formulario para ele alterar ???

E para excluir é normal mano , so pedir para excluir xD