Boa noite, estou com um problema usando uma dialog modal no primefaces, a dialog não está chamando o actionlistener no bean.
<htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:p="http://primefaces.org/ui"><ui:compositiontemplate="/pages/templates/default.xhtml"><ui:definename="conteudo"><f:view><h:formid="formDocumento"><p:toolbarid="bar"><p:toolbarGroupid="superior"><p:commandButtontitle="Visualizar"actionListener="#{homeBean.edita}"styleClass="botao"disabled="#{homeBean.editDisabled}"icon="ui-icon ui-icon-document"ajax="false"/><p:commandButtontitle="Enviar ao Professor"icon="ui-icon ui-icon-mail-closed"styleClass="botao"disabled="#{homeBean.emailDisabled}"ajax="false"actionListener="#{homeBean.enviaDocumento}"/><p:commandButtontitle="Compartilhar"icon="ui-icon ui-icon-comment"styleClass="botao"disabled="#{homeBean.disabled}"onclick="dlgShare.show();"/><p:commandButtontitle="Excluir"icon="ui-icon ui-icon-trash"disabled="#{homeBean.disabled}"styleClass="botao"onclick="confirmation.show()"/></p:toolbarGroup></p:toolbar><p:confirmDialogid="confirmDialog"appendToBody="true"message="Tem certeza que deseja excluir os itens selecionados?"header="Exclusão de documento"severity="alert"widgetVar="confirmation"><p:commandButtonid="confirm"value="Sim"actionListener="#{homeBean.excluiDocumentos}"update=":messages"oncomplete="confirmation.hide()"/><p:commandButtonid="decline"value="Não"onclick="confirmation.hide()"/></p:confirmDialog><p:dialogid="shareDialog"appendToBody="true"header="Compartilhar Documento"widgetVar="dlgShare"modal="true"height="155"width="550"draggable="false"resizable="false"><h:panelGridid="grid"columns="2"cellpadding="5"cellspacing="5"><h:outputTextvalue="Endereços"/><p:inputTextvalue="#{homeBean.emailCompartilhamento}"style="width:300"required="true"requiredMessage="O email é obrigatório"/><p:selectBooleanCheckboxvalue="#{homeBean.permiteEscrita}"disabled="#{homeBean.permiteEscritaDisabled}"itemLabel="Permite Escrita"/><p:selectBooleanCheckboxvalue="#{homeBean.publico}"itemLabel="Público"update="formDlg"><p:ajaxupdate="grid"listener="#{homeBean.checkBoxChange}"/></p:selectBooleanCheckbox></h:panelGrid><h:panelGridcolumns="2"cellpadding="5"><p:commandButtonvalue="OK"style="width:50px"actionListener="#{homeBean.compartilha}"ajax="false"oncomplete="dlgShare.hide()"/><p:commandButtonvalue="Cancelar"onclick="dlgShare.hide()"immediate="true"/></h:panelGrid></p:dialog></h:form></f:view></ui:define></ui:composition></html>
Já tentei fechando o form principal e abrindo outro apenas para o dialog, e também abrindo um form dentro da dialog.
Alguém já passou por isso?
Existe um parâmetro do tipo ActionEvent no método em questão, por exemplo:
public String gravarSoja(ActionEvent actionEvent) {
this.dadosSisgappeFacade.save(this.soja);
soja = new Soja();
return "/consulta_plantacao_soja";
}
[]'s
A
angelo.silvestre
Existe o evento sim, consegui fazer ele chamar o evento deixando ajax habilitado, porém assim surge outro problema, o bean está como @ViewScoped, então ele não seta os atributos no bean
Na verdade se o commandbutton está com ajax=“false” ele não gera nenhuma exceção, simplesmente não chama o listener, porém se está habilitado o ajax ele não seta o valor do bean, daí quando vou tentar acessar o valor da um NullPointerException
G
getAdicted
Posta o código completo: view, controller, quem sabe surge uma luz.
[]'s
A
angelo.silvestre
<htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:p="http://primefaces.org/ui"><ui:compositiontemplate="/pages/templates/default.xhtml"><ui:definename="conteudo"><f:view><h:formid="formDocumento"><p:toolbarid="bar"><p:toolbarGroupid="superior"align="left"><p:commandButtontitle="Visualizar"actionListener="#{homeBean.edita}"styleClass="botao"disabled="#{homeBean.editDisabled}"icon="ui-icon ui-icon-document"ajax="false"/><p:commandButtontitle="Enviar ao Professor"icon="ui-icon ui-icon-mail-closed"styleClass="botao"disabled="#{homeBean.emailDisabled}"ajax="false"actionListener="#{homeBean.enviaDocumento}"/><p:commandButtontitle="Compartilhar"icon="ui-icon ui-icon-comment"styleClass="botao"disabled="#{homeBean.disabled}"onclick="dlgShare.show();"/><p:commandButtontitle="Excluir"icon="ui-icon ui-icon-trash"disabled="#{homeBean.disabled}"styleClass="botao"onclick="confirmation.show()"/></p:toolbarGroup></p:toolbar><p:dataTableid="documentos"var="doc"value="#{homeBean.documentos}"selection="#{homeBean.documentosSelecionados}"widgetVar="docsTable"emptyMessage="Nenhum Documento Encontrado"><f:facetname="header"><p:outputPanel><h:outputTextvalue="Pesquisa:"/><h:inputTextid="globalFilter"onkeyup="docsTable.filter()"/></p:outputPanel></f:facet><p:ajaxevent="rowSelect"listener="#{homeBean.onRowSelect}"update=":messages :geral:formDocumento:bar"/><p:ajaxevent="rowUnselect"listener="#{homeBean.onRowUnselect}"update=":messages :geral:formDocumento:bar"/><p:ajaxevent="toggleSelect"listener="#{homeBean.atualizaEnabled}"update=":messages :geral:formDocumento:bar"/><p:columnselectionMode="multiple"style="width:18px"/><p:columnheaderText="Título"sortBy="#{doc.titulo}"id="colunaTitulo"filterBy="#{doc.titulo}"filterStyle="display:none">#{doc.titulo}</p:column><p:columnheaderText="Dono"sortBy="#{doc.dono.nome}"filterBy="#{doc.dono.nome}"filterStyle="display:none"style="width:250px">#{doc.dono.nome}</p:column><p:columnheaderText="Última modificação"style="width:180px"sortBy="#{doc.dataAlteracao}"><h:outputTextvalue="#{doc.dataAlteracao}"><f:convertDateTimepattern="dd/MM/yyyy hh:mm a"/></h:outputText></p:column><p:columnsortBy="#{doc.palavrasChave}"filterBy="#{doc.palavrasChave}"rendered="false">#{doc.palavrasChave}</p:column></p:dataTable></h:form><p:dialogid="shareDialog"appendToBody="true"header="Compartilhar Documento"widgetVar="dlgShare"modal="true"height="155"width="550"draggable="false"resizable="false"><h:panelGridid="grid"columns="2"cellpadding="5"cellspacing="5"><h:outputTextvalue="Endereços"/><p:inputTextvar="compartilha"value="#{homeBean.emailCompartilhamento}"style="width:300"required="true"requiredMessage="O email é obrigatório"/><p:selectBooleanCheckboxvalue="#{homeBean.permiteEscrita}"disabled="#{homeBean.permiteEscritaDisabled}"itemLabel="Permite Escrita"/><p:selectBooleanCheckboxvalue="#{homeBean.publico}"itemLabel="Público"update="formDlg"><p:ajaxupdate="grid"listener="#{homeBean.checkBoxChange}"/></p:selectBooleanCheckbox></h:panelGrid><h:panelGridcolumns="2"cellpadding="5"><p:commandButtonvalue="OK"style="width:50px"actionListener="#{homeBean.compartilha}"oncomplete="dlgShare.hide()"></p:commandButton><p:commandButtonvalue="Cancelar"onclick="dlgShare.hide()"immediate="true"/></h:panelGrid></p:dialog><p:confirmDialogid="confirmDialog"appendToBody="true"message="Tem certeza que deseja excluir os itens selecionados?"header="Exclusão de documento"severity="alert"widgetVar="confirmation"><p:commandButtonid="confirm"value="Sim"actionListener="#{homeBean.excluiDocumentos}"update=":messages"oncomplete="confirmation.hide()"/><p:commandButtonid="decline"value="Não"onclick="confirmation.hide()"/></p:confirmDialog></f:view></ui:define></ui:composition></html>
packagebr.unisul.prolinear.view;importjava.io.Serializable;importjava.util.List;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.ViewScoped;importjavax.faces.event.ActionEvent;importjavax.faces.event.SystemEvent;importjavax.faces.model.ListDataModel;importjavax.mail.MessagingException;importorg.primefaces.event.SelectEvent;importorg.primefaces.event.UnselectEvent;importbr.unisul.prolinear.dao.DocumentoDaoImp;importbr.unisul.prolinear.dao.UsuarioDaoImp;importbr.unisul.prolinear.model.Aluno;importbr.unisul.prolinear.model.Documento;importbr.unisul.prolinear.utils.SendMail;importbr.unisul.prolinear.utils.Util;@ManagedBean@ViewScoped@SuppressWarnings("unchecked")publicclassHomeBeanextendsBeanimplementsSerializable{/** * */privatestaticfinallongserialVersionUID=1L;privateDocumentoDataModeldocumentos;privateDocumento[]documentosSelecionados;privateStringemailCompartilhamento;privateList<Documento>listDocs;privateIntegertipo;privatebooleanpermiteEscrita;privatebooleanpublico;privatebooleanpermiteEscritaDisabled;privateDocumentoDaoImpdocumentoDAO;privatebooleaneditDisabled;privatebooleandisabled;privatebooleanemailDisabled;privateUsuarioDaoImpusuarioDAO;publicHomeBean(){super();usuarioDAO=newUsuarioDaoImp();disabled=true;editDisabled=true;emailDisabled=true;atualizaListDocumentos();}publicvoidonRowSelect(SelectEventevent){atualizaEnabled();}publicvoidonRowUnselect(UnselectEventevent){atualizaEnabled();}publicvoidcompartilha(ActionEventactionEvent){UsuarioDaoImpdao=newUsuarioDaoImp();DocumentoDaoImpdocDao=newDocumentoDaoImp();String[]s=emailCompartilhamento.split(";");for(Documentodoc:documentosSelecionados){for(Stringemail:s){Alunodestino=(Aluno)dao.get("email",email);if(destino!=null){docDao.compartilhar(doc,destino,false);SendMailsend=newSendMail();send.enviaConfirmacaoCompartilhamento(doc,destino);}else{Util.erro("Usuário não cadastrado.");}}}}publicvoidcheckBoxChange(){permiteEscritaDisabled=publico;if(publico){permiteEscrita=false;}}publicvoidalteraCadastro(ActionEventactionEvent){Util.redirect("../cadastro.jsf?id="+usuario.getId());}publicvoidatualizaEnabled(){editDisabled=documentosSelecionados.length!=1;disabled=documentosSelecionados.length==0;emailDisabled=disabled||aluno==null||aluno.getEmailProfessor().isEmpty();}publicvoidatualiza(SystemEventevent){atualizaListDocumentos();}publicvoidexcluiDocumentos(ActionEventaction){for(Documentodoc:documentosSelecionados){if(documentoDAO==null){documentoDAO=newDocumentoDaoImp();}documentoDAO.delete(doc);}atualizaListDocumentos();}publicvoidenviaDocumento(ActionEventactionEvent){try{SendMailsender=newSendMail();sender.enviaDocumentosProfessor(documentosSelecionados);Util.msg("Documento(s) enviado(s)");}catch(MessagingExceptione){Util.erro(e.getMessage());e.printStackTrace();}}publicvoidedita(ActionEventactionEvent){Util.redirect("documento.jsf?id="+documentosSelecionados[0].getId());}privatevoidatualizaListDocumentos(){setUsuario(usuarioDAO.getById(usuario.getId()));Stringpar=Util.getParametro("tipo");listDocs=null;tipo=null;if(usuarioinstanceofAluno){if(par!=null)tipo=Integer.parseInt(par);if(tipo==null||tipo==1){listDocs=aluno.getDocumentos();}elseif(tipo==2){listDocs=aluno.getDocumentosCompartilhados();}elseif(tipo==3){listDocs=aluno.getDocumentosPublicos();}else{listDocs=Util.appendLists(aluno.getDocumentos(),aluno.getDocumentosCompartilhados(),aluno.getDocumentosPublicos());}}else{listDocs=admnistrador.getDocumentos();}documentos=newDocumentoDataModel(listDocs);}//getters e setters}
A
angelo.silvestre
ninguém mais passou por isso?
G
getAdicted
Cara, eh chato mesmo, quanto ao problema do não acionameto do listener, deixa a sua pagina limpa, adicione componente por componente, assim voce consegue identificar onde tah o problema, voce leu o artigo do Stack? Olha direito ai.