Alguem tem algum tutorial utilizando o ConfirmDialog do Primefaces?
Duvida - ConfirmDialgo primeFaces
12 Respostas
Opa blz, então no próprio site do primefaces (showcase) tem exemplos.
Porém segue exemplo abaixo:
-
confirmDialog.xhtml
<h:form>
<p:growl id=“message” showDetail=“true” />
<p:commandButton value=“Destroy the World” actionListener="#{dialogView.destroyWorld}" update=“message”>
<p:confirm header=“Confirmation” message=“Are you sure?” icon=“ui-icon-alert” />
</p:commandButton><p:confirmDialog global="true" showEffect="fade" hideEffect="fade"> <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" /> <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> </p:confirmDialog>
</h:form>
-
DialogView.java
package org.primefaces.showcase.view.overlay;
import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.context.FacesContext;
import org.primefaces.event.CloseEvent;
@ManagedBean
public class DialogView {public void destroyWorld() { addMessage("System Error", "Please try again later."); } public void addMessage(String summary, String detail) { FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail); FacesContext.getCurrentInstance().addMessage(null, message); }
}
Para mais informações segue documentação Primefaces em http://www.primefaces.org/docs/guide/primefaces_user_guide_5_3.pdf.
Consegui tranquilo fazer o exemplo no site, mais quando estou usando no meu código não está dando certo.
*Estou querendo usar nesta coluna Excluir, mais não consigo
<ui:composition template="/template/layoutpadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:componentedataHora=“http://java.sun.com/jsf/composite/componetesStudio”>
<h:outputStylesheet library="css" name="sistema.css" />
<ui:define name="titulo"> controle de agendamento</ui:define>
<ui:define name="Botao">
<h:form>
<ui:include src="/template/layoutCabecalho.xhtml" />
</h:form>
</ui:define>
<ui:define name="corpo">
<h:form>
<p:growl />
<br /> <br /> <br />
<p:dataTable value="#{consultaAgenda.listAgendamento}"
var="obj" width="100%" styleClass="cabecalho"
rows="30" paginator="true" paginatorAlwaysVisible="false"
emptyMessage="Não existe agendamentos." id="tableagenda">
<f:facet name="header">Lista de Agendamentos</f:facet>
<p:column headerText="Nome" sortBy="#{obj.nome}">
<div style="text-align: center;">
<p:outputLabel value="#{obj.nome}" styleClass="centro" />
</div>
</p:column>
<p:column headerText="Tel. Celular" >
<div style="text-align: center;">
<p:outputLabel value="#{obj.telefoneCelular}" styleClass="centro" />
</div>
</p:column>
<p:column headerText="Tel. Residencial">
<div style="text-align: center;">
<p:outputLabel value="#{obj.telefoneResidencial}" styleClass="centro" />
</div>
</p:column>
<p:column headerText="Funcionario" width="10%" sortBy="#{obj.funcionario.funcNome}">
<div style="text-align: center;">
<p:outputLabel value="#{obj.funcionario.funcNome}" styleClass="centro" />
</div>
</p:column>
<p:column headerText="Descrição do Serviço" width="30%">
<div style="text-align: center;">
<h:outputLabel value="#{obj.descricaoServ}" />
</div>
</p:column>
<p:column headerText="Agendado" width="95" sortBy="#{obj.data}">
<div style="text-align: center">
<componentedataHora:outputData valor="#{obj.data}" styleClass="centro" />
</div>
</p:column>
<p:column headerText="Hora" width="55" sortBy="#{obj.hora}">
<componentedataHora:outputhora hora="#{obj.hora}" styleClass="centro" />
</p:column>
<p:column headerText="Editar" width="50">
<div style="text-align: center;">
<p:button outcome="cadastroagendamento" icon="ui-icon-pencil">
<f:param name="codigo" value="#{obj.id}" />
</p:button>
</div>
</p:column>
<p:column headerText="Excluir" width="50">
<div style="text-align: center;">
<p:commandButton icon="ui-icon-trash" style="text-align:center;">
<p:confirm header="Excluir agendamento" message="Deseja excluir este agendamento?" icon="ui-icon-alert" >
<f:setPropertyActionListener value="#{obj}" target="#{consultaAgenda.agendamentoSelecionado}" /> <!-- Pega Objeto selecionado -->
</p:confirm>
</p:commandButton>
</div>
</p:column>
</p:dataTable>
<p:confirmDialog global="true" showEffect="explode" hideEffect="fade">
<p:commandButton value="Sim" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="confirm.hide();" actionListener="#{consultaAgenda.excluir()}" />
<p:commandButton value="Não" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="confirm.hide(); return false;" />
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>`
`
Então tenta o seguinte:
<p:commandButton icon="ui-icon-trash" style="text-align:center;" oncomplete="confirmacao.show()">
<p:confirm header="Excluir agendamento" message="Deseja excluir este agendamento?" icon="ui-icon-alert" >
<f:setPropertyActionListener value="#{obj}" target="#{consultaAgenda.agendamentoSelecionado}" /> <!-- Pega Objeto selecionado -->
</p:confirm>
</p:commandButton>
E na confirmDialog acresenta o widgetVar conforme abaixo:
<p:confirmDialog global="true" showEffect="explode" hideEffect="fade" widgetVar="confirmacao">
<p:commandButton value="Sim" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="confirm.hide();" actionListener="#{consultaAgenda.excluir()}" />
<p:commandButton value="Não" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="confirm.hide(); return false;" />
</p:confirmDialog>
Vê o que acontece aí.
Falow.
Tentei desta forma que você mostrou o exemplo, abre a caixa de dialogo e quando clico no SIM ele não executa a action. não sei o que esta Pegando.
OBS: Creio que meu BEAN está normal, estava antes usando imagens.png e excluía normal, quando e tentei usar o ConfirmDialog ele não esta dando certo.
Tenta fazer o seguinte:
No seu confirmDialog trocando de actionListener para action.
<p:confirmDialog global="true" showEffect="explode" hideEffect="fade" widgetVar="confirmacao">
<p:commandButton value="Sim" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" oncomplete="confirm.hide();" action="#{consultaAgenda.excluir()}" />
<p:commandButton value="Não" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="confirm.hide(); return false;" />
</p:confirmDialog>
Vê se agora acontece alguma coisa.
HA SIM, eu acabei de trocar do actionListener para action, estou tentando de outra forma para ver se consigo se der certo mostro o codigo.
valeu obrigado pela ajuda parçeiro.
Falow 
é não deu certo, vou tentar aqui. assim que conseguir te mando o codigo.
Acontece algum erro ?
Pior que não, abre a caixa de Dialogo até ai tudo bem. Quando clico no Sim ele não executa a ActionListener, mudei para action e nada. Antes eu usava imagens.png para excluir e não tinha caixa de Dialogo, decidi mudar e estou quebrando cabeça.
Debug o método excluir, para vê se esta chamando no momento da ação.
vou aprender como faz, porque não lembro como faz. Sou novo no desenvolvimento.