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.
...
public void checarAutenticacao() throws Exception {
System.out.println("oi");
throw new Exception("Exception Test");
}
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:confirmDialog widgetVar="dlgSalva" id="dlgSalva"
message="Efetue seu Login com CPF e Senha cadastrados."
header="Gravação de Usuário" severity="alert" update=":formCadastro">
<p:commandButton id="cmdOk" value="OK"
oncomplete="dlgConfirma.hide()"
action="/login_aluno?faces-redirect=true" />
</p:confirmDialog>
<p:confirmDialog widgetVar="dlgAltera" id="dlgAltera"
message="Seus dados foram alterados."
header="Alteração do cadastro de Usuário" severity="alert"
update=":formCadastro">
<p:commandButton id="cmdOk2" value="OK"
oncomplete="dlgAltera.hide()" action="/cursos?faces-redirect=true" />
</p:confirmDialog>
E o meu ManagedBean:
public void salvar() {
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 exibido
org.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 exibido
org.primefaces.context.RequestContext.getCurrentInstance()
.execute("dlgAltera.show();");
}
this.aluno = new Aluno();
JMensagemUtility.adicionarMensagemDeSucesso(
JMensagemUtility.FORM_CADASTRO,
JMensagemUtility.SUCESSO_SALVAR);
} catch (Exception ex) {
JMensagemUtility.adicionarMensagemDeErro(
JMensagemUtility.FORM_CADASTRO,
JMensagemUtility.ERRO_SALVAR);
}
}
Mesmo assim muito obrigada pela ajuda Gustavo!
Abraço!