Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gerando uma mensagem FacesMessage utilizando f:vVewAction

Estava utilizando os componentes f:viewParam e f:viewAction e gostaria de enviar uma mensagem ao usuário caso no id informando no parâmetro não existisse. Como fazer isso? Tentei utilizar o código baixo mas a mensagem não é exibida.

public void carregarAutorPelaId() {
        this.autor = new DAO<Autor>(Autor.class).buscaPorId(this.autor.getId());
        if (this.autor == null) {
            System.out.println("carregarAutorPelaId");
            this.autor = new Autor();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Autor não existente no banco de dados."));
        }
    }

Observação: Adicionei o h:messages no jsp do autor.xhtml, mas não adiantou. A mensagem do console do eclipse foi:

INFORMAÇÕES: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=null[severity=(INFO 0), summary=(Autor não existente no banco de dados.), detail=(Autor não existente no banco de dados.)]

Abaixo código dos componentes jsf utilizados

    <h:messages/>
    <f:metadata>
        <f:viewParam name="autorId" value="#{autorBean.autor.id}" />
        <f:viewAction action="#{autorBean.carregarAutorPelaId}" if="#{param.autorId != null}"/>        
    </f:metadata>
1 resposta
solução!

Fala Felipe, tudo bem?

o problema é que o seu <h:messages/> está fora de um form. A Exception esta dizendo que não esta conseguindo mostrar a mensagem enfileirada. Tente colocar o <h:messages> dentro do seu formulário e veja se funciona.

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software