confirmDialog não funciona no primefaces [RESOLVIDO]
14 respostas
warquia
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
<htmlxmlns="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:formid="formCadastroPessoas"><p:commandButtonid="excluirButton"title="Excluir Registro"oncomplete="confirmationDialog.show()"icon="ui-icon-closethick"/><p:confirmDialogwidgetVar="confirmationDialog"message="Deseja realmente excluir o registro?"severity="alert"header="Excluir cadastro"appendToBody="true"><p:commandButtonvalue="Sim, desejo"id="btnSim"type="button"update="formCadastroPessoas"ajax="false"actionListener="#{paginaBean.abrepagina('homepage.jsf')}"widgetVar="confirmationDialog"oncomplete="confirmationDialog.hide()"/><p:commandButtonvalue="Não"onclick="confirmationDialog.hide()"type="button"/></p:confirmDialog></h:form></h:body></html>
Mostra o método abre página.
Acho que actionListener pode-se passar parâmetros não.
teria que ser action.
lele_vader
Além do update só funcionar para requisições ajax eu acho.
CristianPalmaSola10
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…
warquia
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:
<p:confirmDialogwidgetVar="confirmationDialog"message="Deseja realmente excluir o registro?"severity="alert"header="Excluir cadastro"appendToBody="true"><h:commandButtonvalue="Sim, desejo"id="btnSim"type="button"update="formCadastroPessoas"ajax="false"><p:ajaxevent="click"listener="#{pessoaBean.excluir()}"oncomplete="confirmationDialog.hide()"/></h:commandButton><h:commandButtonvalue="Não"onclick="confirmationDialog.hide()"type="button"/></p:confirmDialog>
CristianPalmaSola10
Se voce fazer assim
publicvoidabrepagina()throwsIOException{//Redireciona para uma pagina FacesContextfaces=FacesContext.getCurrentInstance();ExternalContextcontext=faces.getExternalContext();context.redirect("homrpage.jsf");}
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
publicStringevento(Stringstring){
returnstring;
}
A
ayslanms
Esse type=“button” não faz requisição, remova isso.
pedruhenrik
não sei bem se é o q vc precisa.
MAS eu uso algo "parecido" da seguinte forma:
<p:dialogid="usuario"header="Encaminhar para Usuário"widgetVar="usuario"modal="true"height="210"width="970"draggable="true"resizable="false"closable="true"><h:form><p:panelid="panelDialogUsuario"><br/><table><tr><td><h:outputLabelvalue="Unidade"/></td><td><p:outputPanelid="first"rendered="true"><h:selectOneMenuvalue="#{unidadeController.unidade.cnpj}"valueChangeListener="#{unidadeController.filtrarSetorsPorunidade}"label="unidade Destinatario"><f:selectItemitemLabel="Selecione a unidade"></f:selectItem><f:selectItemsvalue="#{unidadeController.unidadesList}"var="unidade"itemLabel="#{unidade.razaoSocial}"itemValue="#{unidade.cnpj}"></f:selectItems><p:ajaxevent="valueChange"update="second third fourth fifth sixth"/></h:selectOneMenu></p:outputPanel></td></tr><tr><td><h:outputLabelvalue="Setor"></h:outputLabel></td><tdcolspan="2"><p:outputPanelid="second"rendered="true"><h:selectOneMenuvalue="#{unidadeController.nome1}"valueChangeListener="#{unidadeController.filtrarSetors1}"label="Setor Destinatario"><f:selectItemitemLabel="Selecione o Setor"noSelectionOption="true"></f:selectItem><f:selectItemsvalue="#{unidadeController.dps1}"var="dp"itemLabel="#{dp.nome}"itemValue="#{dp.nome}"></f:selectItems><p:ajaxevent="valueChange"update="third fourth fifth sixth"></p:ajax></h:selectOneMenu></p:outputPanel></td></tr><tr><td></td><tdcolspan="2"><p:outputPanelid="third"rendered="true"><h:selectOneMenuvalue="#{unidadeController.nome2}"valueChangeListener="#{unidadeController.filtrarSetors2}"label="Setor Destinatario"rendered="#{not empty unidadeController.dps2}"><f:selectItemitemLabel="Selecione o Setor"></f:selectItem><f:selectItemsvalue="#{unidadeController.dps2}"var="dp"itemLabel="#{dp.nome}"itemValue="#{dp.nome}"></f:selectItems><p:ajaxevent="valueChange"update="second third fourth fifth sixth"/></h:selectOneMenu></p:outputPanel></td></tr><tr><td></td><td><p:outputPanelid="fourth"rendered="true"><h:selectOneMenuvalue="#{unidadeController.nome3}"valueChangeListener="#{unidadeController.filtrarSetors3}"label="Setor Destinatario"rendered="#{not empty unidadeController.dps3}"><f:selectItemitemLabel="Selecione o Setor"></f:selectItem><f:selectItemsvalue="#{unidadeController.dps3}"var="dp"itemLabel="#{dp.nome}"itemValue="#{dp.nome}"></f:selectItems><p:ajaxevent="valueChange"update="second third fourth fifth sixth"/></h:selectOneMenu></p:outputPanel></td></tr><tr><td></td><td><p:outputPanelid="fifth"rendered="true"><h:selectOneMenuvalue="#{unidadeController.nome4}"valueChangeListener="#{unidadeController.filtrarSetors4}"label="Setor Destinatario"rendered="#{not empty unidadeController.dps4}"><f:selectItemitemLabel="Selecione o Setor"></f:selectItem><f:selectItemsvalue="#{unidadeController.dps4}"var="dp"itemLabel="#{dp.nome}"itemValue="#{dp.nome}"></f:selectItems><p:ajaxevent="valueChange"update="sixth"/></h:selectOneMenu></p:outputPanel></td></tr><tr><td><h:outputLabelvalue="Usuário"></h:outputLabel></td><td><p:outputPanelid="sixth"rendered="true"><c:iftest="#{empty unidadeController.usuarios ? false : true}"><h:selectOneMenuvalue="#{envelopeController.usuario}"label="Usuário Destinatario"><f:selectItemitemLabel="Selecione o Usuário"></f:selectItem><f:selectItemsvalue="#{unidadeController.usuarios}"var="usuario"itemLabel="#{usuario.nome}"itemValue="#{usuario.cpf}"></f:selectItems></h:selectOneMenu></c:if></p:outputPanel></td></tr><tr><td><p:commandButtonvalue="OK"action="#{envelopeController.setaUsuario}"ajax="false"/></td></tr></table></p:panel></h:form></p:dialog>
att,
warquia
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?
<htmlxmlns="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:formid="formCadastroPessoas"><p:commandButtonid="excluirButton"title="Excluir Registro"oncomplete="confirmationDialog.show()"icon="ui-icon-closethick"/><p:confirmDialogwidgetVar="confirmationDialog"message="Deseja realmente excluir o registro?"severity="alert"header="Excluir cadastro"appendToBody="true"><p:commandButtonvalue="Sim, desejo"id="btnSim"update="formCadastroPessoas"ajax="false"actionListener="#{paginaBean.homePage()}"oncomplete="confirmationDialog.hide()"/><p:commandButtonvalue="Não"onclick="confirmationDialog.hide()"type="button"/></p:confirmDialog></h:form></h:body></html>
Bean
packagebr.com.canion.mascate.bean;importjava.io.IOException;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.RequestScoped;importjavax.faces.bean.SessionScoped;importjavax.faces.context.ExternalContext;importjavax.faces.context.FacesContext;@ManagedBean@RequestScopedpublicclassPaginaBean{privateStringpathPagina;publicPaginaBean(){pathPagina="/homePage.xhtml";}publicStringgetPathPagina(){returnpathPagina;}publicvoidsetPathPagina(StringpathPagina){this.pathPagina=pathPagina;}publicvoidhomePage(){setPathPagina("/homePage.xhtml");}publicvoidabrepagina(StringNomePagina)throwsIOException{//Redireciona para uma paginaFacesContextfaces=FacesContext.getCurrentInstance();ExternalContextcontext=faces.getExternalContext();context.redirect(NomePagina);}}
lele_vader
Troca o actionListener por action no parametro do
E tira o update.
<p:confirmDialogwidgetVar="confirmationDialog"message="Deseja realmente excluir o registro?"severity="alert"header="Excluir cadastro"appendToBody="true"><p:commandButtonvalue="Sim, desejo"id="btnSim"ajax="false"action="#{paginaBean.abrepagina('homepage.jsf')}"widgetVar="confirmationDialog"oncomplete="confirmationDialog.hide()"/><p:commandButtonvalue="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.
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).
lele_vader
Caramba.
Pensei que não tivesse funcionado nunca.
warquia
Só que agora ficou com a mensagem por traz do Modal. Tem ideia de como resolver isso?
warquia1 like
Amigos conseguir resolver de acordo com esse post:
Para resolver foi preciso jogar <h:form> dentro do confirmDialog
<p:confirmDialogwidgetVar="confirmationDialogExcluir"severity="alert"message="Deseja realmente excluir o registro #{pessoaBean.pessoa.cdstrNome}? "header="Excluir cadastro"appendToBody="true"><h:formid="formConfirmDialogExcluir"><p:commandButtonvalue="Sim, desejo"id="btnSim"ajax="false"action="#{pessoaBean.excluir()}"oncomplete="confirmationDialogExcluir.hide()"/><p:commandButtonvalue="Não"onclick="confirmationDialogExcluir.hide()"type="button"/></h:form></p:confirmDialog>