Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Mensagem global nao aparece na pagina de login

Olá!

Eu fiz alguns testes na tela de login da aplicação livraria e percebi algo interessante

Quando eu uso a instrução:

<p:commandButton value="Efetue Login" action="#{usuarioBean.efetuaLogin}" update="@form" process="@form" />

A mensagem global simplesmente não aparece.

Ela só aparece quando eu coloco:

<p:commandButton value="Efetue Login" action="livro?faces-redirect=true" actionListener="#{usuarioBean.efetuaLogin}" update="@form" process="@form" />

Alguem sabe me falar o porquê deste comportamento?

Abraços a todos!

4 respostas

Fala Rafael, tudo bem?

de uma olhada se o seu método efetuaLogin esta implementado dessa maneira:

    public RedirectView efetuaLogin() {
        System.out.println("Fazendo login do usuário " + this.usuario.getEmail());

        boolean existe = dao.existe(this.usuario);

        if (existe) {
            context.getExternalContext().getSessionMap().put("usuarioLogado", this.usuario);

            return new RedirectView("livro");
        }

        context.getExternalContext().getFlash().setKeepMessages(true);
        context.addMessage(null, new FacesMessage("Usuário não encontrado"));

        return new RedirectView("login");

    }

Olá Samir, boa noite!

Então cara, meu método tá implementado dessa maneira:

public String efetuaLogin() {
        System.out.println("Consultando usuario...");
        FacesContext context = FacesContext.getCurrentInstance();
        Boolean existe = new UsuarioDAO().checkUsuario(usuario);
        if(existe) {
            context.getExternalContext().getSessionMap().put("usuarioLogado", this.usuario);
            return "livro?javax-redirect=true";
        }

        System.out.println("Flash Context");
        FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);

        System.out.println("Mensagem usuario nao existe");
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário e/ou senha inválidos!", ""));

        return "login?javax-redirect=true";

    }

E meu XML tá implementado assim:

<p:commandButton value="Efetuar Login"
                        action="livro?faces-redirect=true"
                        actionListener="#{usuarioBean.efetuaLogin}" update="@form"
                        process="@form" />

Fiz meus testes no Chrome.

Eu, realmente, não entendi como o meu sistema se comporta dessa maneira.

Muito obrigado pela sua resposta!

Abraços!

solução!

Rafael, tenta tirar o action listener e chamar o efetua login na action msm

Samir, boa noite!

Consegui resolver!!

Conforme voce falou, meu XML ficou assim:

<p:commandButton value="Efetuar Login" action="#{usuarioBean.logar}" process="@all" update="@all" />

E o sistema funcionou normalmente!

Obrigado mais uma vez!

Abraços!