[Resolvido] Não consigo acionar o "onerror"do commandButton usando JSF e Primefaces
4 respostas
G
gustavo_souza
Olá Amigos,
Estou programando com JSF, usando ManagedBean e usando o componente Primefaces, e tenho seguindo problema.
Estou tentando usar o “onerror” do <p:commandButton> do Primefaces. Pelo que eu saiba o “onerror” é usado para fazer alguma coisa na tela caso acorra algum erro ou Exception no meu ManagedBean do JSF, só que esse “onerror” não está sendo acionado quando jogo uma Exception para ele.
Vocês sabem porque o “onerror” não é acionado (o dialog não aparece) ? Não aparece erro nenhum. Só aparece a String “oi” no meu console, comprovando que o método foi chamado e depois a strack trace com a Exception, mas eu gostaria que a dialog fosse aberta, conforme digitei no “onerror”.
Esse post foi criado por mim em julho do ano passado, e eu já resolvi essa dificuldade, mas como a Juliana colocou no ar essa duvida de novo, vou postar aqui a minha solução para quem interessar.
O "onerror" ele não serve para erros no Bean como eu pensava, ele só é acionado para erros javaScript.
A minha solução foi abrir os Dialogs (popup) do primefaces pelo Bean, depois de certa condição.
<p:confirmDialogwidgetVar="dlgSalva"id="dlgSalva"message="Efetue seu Login com CPF e Senha cadastrados."header="Gravação de Usuário"severity="alert"update=":formCadastro"><p:commandButtonid="cmdOk"value="OK"oncomplete="dlgConfirma.hide()"action="/login_aluno?faces-redirect=true"/></p:confirmDialog><p:confirmDialogwidgetVar="dlgAltera"id="dlgAltera"message="Seus dados foram alterados."header="Alteração do cadastro de Usuário"severity="alert"update=":formCadastro"><p:commandButtonid="cmdOk2"value="OK"oncomplete="dlgAltera.hide()"action="/cursos?faces-redirect=true"/></p:confirmDialog>
E o meu ManagedBean:
publicvoidsalvar(){if(aluno.getCadastro().getLogradouro().getId()==0){JMensagemUtility.adicionarMensagemDeErro(JMensagemUtility.FORM_CADASTRO,JMensagemUtility.ENDERECO_INVALIDO);return;}try{if(aluno.getCadastro().getId()==0){alunoFacade.adiciona(aluno,aluno.getUsuarioWeb());//É enviado comando para o jsf para que o dialog de confirmação de cadastro seja exibidoorg.primefaces.context.RequestContext.getCurrentInstance().execute("dlgSalva.show();");}else{alunoFacade.atualiza(aluno,aluno.getUsuarioWeb());//É enviado comando para o jsf para que o dialog de confirmação de alteração seja exibidoorg.primefaces.context.RequestContext.getCurrentInstance().execute("dlgAltera.show();");}this.aluno=newAluno();JMensagemUtility.adicionarMensagemDeSucesso(JMensagemUtility.FORM_CADASTRO,JMensagemUtility.SUCESSO_SALVAR);}catch(Exceptionex){JMensagemUtility.adicionarMensagemDeErro(JMensagemUtility.FORM_CADASTRO,JMensagemUtility.ERRO_SALVAR);}}
Mesmo assim muito obrigada pela ajuda Gustavo! ;)
Abraço!