confirmDialog não funciona no primefaces [RESOLVIDO]

Bom dia amigos, estou com um problema em um componente primefaces, o confirmDialog não dispara o form, ou seja ele não executa nenhuma ação no sistema.
Quando clico em “Sim, desejo” não acontece nada. um detalhe importante usando “<:h” da certo.

Obs: já coloquei ajax = false, immediate= true

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
    </h:head>


    <h:body>
        <h:form id="formCadastroPessoas">
            <p:commandButton id="excluirButton" title="Excluir Registro"
                             oncomplete="confirmationDialog.show()"
                             icon="ui-icon-closethick"/>

            <p:confirmDialog widgetVar="confirmationDialog"
                             message="Deseja realmente excluir o registro?" severity="alert"
                             header="Excluir cadastro" appendToBody="true">

                <p:commandButton value="Sim, desejo" id="btnSim" type="button" update="formCadastroPessoas" 
                                 ajax="false" actionListener="#{paginaBean.abrepagina('homepage.jsf')}"
                                 widgetVar="confirmationDialog"
                                 oncomplete="confirmationDialog.hide()" />                

                <p:commandButton value="Não" onclick="confirmationDialog.hide()" type="button"/>  

            </p:confirmDialog>
        </h:form>
    </h:body>
</html>

Obrigado,
Warquia P.

Mostra o método abre página.
Acho que actionListener pode-se passar parâmetros não.
teria que ser action.

Além do update só funcionar para requisições ajax eu acho.

Concordo com o lele_vader naum conheco forma nenhum de se passar parametros a não ser na url, faz um teste tira o parametro do metodo e faz a chamada novamente…
Eu ja tentei passar parametros para metodos em algumas ocassioes mas nao rolou…

Obs: Nem chega a dispará o método

    public void abrepagina(String NomePagina) throws IOException {
        //Redireciona para uma pagina
        FacesContext faces = FacesContext.getCurrentInstance();
        ExternalContext context = faces.getExternalContext();
        context.redirect(NomePagina);
    }

Outra coisa já tentei com AJAX também, observe:

[code]
<p:confirmDialog widgetVar="confirmationDialog"
message=“Deseja realmente excluir o registro?” severity="alert"
header=“Excluir cadastro” appendToBody=“true”>

                    <h:commandButton value="Sim, desejo" id="btnSim" type="button" update="formCadastroPessoas" ajax="false">
                        <p:ajax event="click" listener="#{pessoaBean.excluir()}"  oncomplete="confirmationDialog.hide()"/>
                    </h:commandButton> 

                    <h:commandButton value="Não" onclick="confirmationDialog.hide()" type="button"/>  
                </p:confirmDialog>[/code]

Se voce fazer assim

public void abrepagina() throws IOException {  
    //Redireciona para uma pagina  
    FacesContext faces = FacesContext.getCurrentInstance();  
    ExternalContext context = faces.getExternalContext();  
    context.redirect("homrpage.jsf");  
} 

e tenta usar seu botao assim

&lt;p:commandButton value="Sim, desejo" id="btnSim" update="formCadastroPessoas"   
                                 actionListener="#{paginaBean.abrepagina()}"  
                                 widgetVar="confirmationDialog"  
                                 oncomplete="confirmationDialog.hide()" /&gt;   

dai funcionou ?

Um action listener tem que ter um parâmetro ActionEvent não ?

public void evento(ActionEvent event){

}

agora se passar action você pode passar assim

public String evento(String string){
return string;
}

Esse type=“button” não faz requisição, remova isso.

não sei bem se é o q vc precisa.
MAS eu uso algo “parecido” da seguinte forma:

[code]<p:dialog id=“usuario” header=“Encaminhar para Usuário"
widgetVar=“usuario” modal=“true” height=“210” width=“970"
draggable=“true” resizable=“false” closable=“true”>
<h:form>
<p:panel id=“panelDialogUsuario”>


<table>
<tr>
<td><h:outputLabel value=“Unidade” />
</td>
<td><p:outputPanel id=“first” rendered=“true”>
<h:selectOneMenu value=”#{unidadeController.unidade.cnpj}“
valueChangeListener=”#{unidadeController.filtrarSetorsPorunidade}“
label=“unidade Destinatario”>
<f:selectItem itemLabel=“Selecione a unidade”></f:selectItem>
<f:selectItems value=”#{unidadeController.unidadesList}” var=“unidade"
itemLabel=”#{unidade.razaoSocial}" itemValue="#{unidade.cnpj}"></f:selectItems>
<p:ajax event=“valueChange"
update=“second third fourth fifth sixth” />
</h:selectOneMenu>
</p:outputPanel>
</td>
</tr>
<tr>
<td><h:outputLabel value=“Setor”></h:outputLabel>
</td>
<td colspan=“2”><p:outputPanel id=“second” rendered=“true”>
<h:selectOneMenu value=”#{unidadeController.nome1}“
valueChangeListener=”#{unidadeController.filtrarSetors1}“
label=“Setor Destinatario”>
<f:selectItem itemLabel=“Selecione o Setor"
noSelectionOption=“true”></f:selectItem>
<f:selectItems value=”#{unidadeController.dps1}” var=“dp"
itemLabel=”#{dp.nome}" itemValue="#{dp.nome}">
</f:selectItems>
<p:ajax event=“valueChange” update=“third fourth fifth sixth”></p:ajax>
</h:selectOneMenu>
</p:outputPanel>
</td>
</tr>
<tr>
<td></td>
<td colspan=“2”><p:outputPanel id=“third” rendered=“true”>
<h:selectOneMenu value="#{unidadeController.nome2}“
valueChangeListener=”#{unidadeController.filtrarSetors2}“
label=“Setor Destinatario"
rendered=”#{not empty unidadeController.dps2}”>
<f:selectItem itemLabel=“Selecione o Setor”></f:selectItem>
<f:selectItems value="#{unidadeController.dps2}" var=“dp"
itemLabel=”#{dp.nome}" itemValue="#{dp.nome}"></f:selectItems>
<p:ajax event=“valueChange"
update=“second third fourth fifth sixth” />
</h:selectOneMenu>
</p:outputPanel>
</td>
</tr>
<tr>
<td></td>
<td><p:outputPanel id=“fourth” rendered=“true”>
<h:selectOneMenu value=”#{unidadeController.nome3}“
valueChangeListener=”#{unidadeController.filtrarSetors3}“
label=“Setor Destinatario"
rendered=”#{not empty unidadeController.dps3}”>
<f:selectItem itemLabel=“Selecione o Setor”></f:selectItem>
<f:selectItems value="#{unidadeController.dps3}" var=“dp"
itemLabel=”#{dp.nome}" itemValue="#{dp.nome}"></f:selectItems>
<p:ajax event=“valueChange"
update=“second third fourth fifth sixth” />
</h:selectOneMenu>
</p:outputPanel>
</td>
</tr>
<tr>
<td></td>
<td><p:outputPanel id=“fifth” rendered=“true”>
<h:selectOneMenu value=”#{unidadeController.nome4}“
valueChangeListener=”#{unidadeController.filtrarSetors4}“
label=“Setor Destinatario"
rendered=”#{not empty unidadeController.dps4}”>
<f:selectItem itemLabel=“Selecione o Setor”></f:selectItem>
<f:selectItems value="#{unidadeController.dps4}" var=“dp"
itemLabel=”#{dp.nome}" itemValue="#{dp.nome}"></f:selectItems>
<p:ajax event=“valueChange” update=“sixth” />
</h:selectOneMenu>
</p:outputPanel>
</td>
</tr>
<tr>
<td><h:outputLabel value=“Usuário”></h:outputLabel>
</td>
<td><p:outputPanel id=“sixth” rendered=“true”>
<c:if test="#{empty unidadeController.usuarios ? false : true}">
<h:selectOneMenu value="#{envelopeController.usuario}“
label=“Usuário Destinatario”>
<f:selectItem itemLabel=“Selecione o Usuário”></f:selectItem>
<f:selectItems value=”#{unidadeController.usuarios}“
var=“usuario” itemLabel=”#{usuario.nome}“
itemValue=”#{usuario.cpf}"></f:selectItems>
</h:selectOneMenu>
</c:if>

							&lt;/p:outputPanel&gt;
						&lt;/td&gt;
					&lt;/tr&gt;

					&lt;tr&gt;
						&lt;td&gt;&lt;p:commandButton value="OK"
								action="#{envelopeController.setaUsuario}" ajax="false" /&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;
			&lt;/p:panel&gt;
		&lt;/h:form&gt;
	&lt;/p:dialog&gt;[/code]

att,

Amigos fiz o que vocês me pediram e não deu certo: Não passei por Como parâmetro, tirei o type=“Button” e nada.
Se não for pedir muito teria como vcs testarem na sua maquina para ver o que acontece?

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
    </h:head>


    <h:body>
        <h:form id="formCadastroPessoas">
            <p:commandButton id="excluirButton" title="Excluir Registro"
                             oncomplete="confirmationDialog.show()"
                             icon="ui-icon-closethick"/>

            <p:confirmDialog widgetVar="confirmationDialog"
                             message="Deseja realmente excluir o registro?" severity="alert"
                             header="Excluir cadastro" appendToBody="true">

                <p:commandButton value="Sim, desejo" id="btnSim" update="formCadastroPessoas" 
                                 ajax="false" actionListener="#{paginaBean.homePage()}"
                                 oncomplete="confirmationDialog.hide()" />                

                <p:commandButton value="Não" onclick="confirmationDialog.hide()" type="button"/>  

            </p:confirmDialog>
        </h:form>
    </h:body>
</html>

Bean

package br.com.canion.mascate.bean;

import java.io.IOException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

@ManagedBean
@RequestScoped
public class PaginaBean {

    private String pathPagina;

    public PaginaBean() {
        pathPagina = "/homePage.xhtml";
    }

    public String getPathPagina() {
        return pathPagina;
    }

    public void setPathPagina(String pathPagina) {
        this.pathPagina = pathPagina;
    }

    public void homePage() {
        setPathPagina("/homePage.xhtml");
    }
    public void abrepagina(String NomePagina) throws IOException {
        //Redireciona para uma pagina
        FacesContext faces = FacesContext.getCurrentInstance();
        ExternalContext context = faces.getExternalContext();
        context.redirect(NomePagina);
    }

}

Troca o actionListener por action no parametro do
E tira o update.

<p:confirmDialog widgetVar="confirmationDialog"  
                             message="Deseja realmente excluir o registro?" severity="alert"  
                             header="Excluir cadastro" appendToBody="true">  
  
                <p:commandButton value="Sim, desejo" id="btnSim"   
                                 ajax="false" action="#{paginaBean.abrepagina('homepage.jsf')}"  
                                 widgetVar="confirmationDialog"  
                                 oncomplete="confirmationDialog.hide()" />                  
  
                <p:commandButton value="Não" onclick="confirmationDialog.hide()"/>    
  
            </p:confirmDialog> 

No bean coloca assim, pois não tenho certeza se actions podem ser void

Por sinal seu método não está no padrão camel case, pode ser por isso também que não entra.


public String abrePagina(String NomePagina) throws IOException {  
        //Redireciona para uma pagina  
        FacesContext faces = FacesContext.getCurrentInstance();  
        ExternalContext context = faces.getExternalContext();  
        context.redirect(NomePagina);  
        return null;
    }  

Debuga e ve se entra no abrePagina

Também não deu certo. mas descobrir uma coisa se eu não usar o parâmetro appendToBody=“true” o confirmDialog Funcionar 100% mas tem um probleminha ele fica por atrás da tela(atrás do div de modal).

Caramba.
Pensei que não tivesse funcionado nunca.

Só que agora ficou com a mensagem por traz do Modal. Tem ideia de como resolver isso?

Amigos conseguir resolver de acordo com esse post:

http://www.guj.com.br/java/284180-problema-com-template-jsf-2-e-confirmdialog-do-primefaces

Para resolver foi preciso jogar <h:form> dentro do confirmDialog

                <p:confirmDialog widgetVar="confirmationDialogExcluir" severity="alert" 
                                 message="Deseja realmente excluir o registro #{pessoaBean.pessoa.cdstrNome}? " 
                                 header="Excluir cadastro" appendToBody="true">
                    <h:form id="formConfirmDialogExcluir">                    
                        <p:commandButton value="Sim, desejo" id="btnSim" ajax="false" action="#{pessoaBean.excluir()}" oncomplete="confirmationDialogExcluir.hide()" />
                        <p:commandButton value="Não" onclick="confirmationDialogExcluir.hide()" type="button"/>  
                    </h:form>                                               
                </p:confirmDialog>

Obrigado a todos pela ajuda.

1 curtida