2
respostas

O meu LoginBean não estava anotado com @ViewScoped

Quando coloquei CDI na tela de login, ela parou de funcionar. Vi que o meu LoginBean não estava anotado com @ViewScoped. O detalhe é que venho desde o primeiro treinamento.

2 respostas

Oi Paulo

Poste aqui o código para nós darmos uma olhada, por favor.

Abraço!

Não sei se o meu post foi claro, mas já está funcionando, ok? Apenas registrei a observação caso outro aluno passe pelo mesmo problema. Abraço,

package br.com.caelum.livraria.bean;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;

import br.com.caelum.livraria.dao.UsuarioDAO;
import br.com.caelum.livraria.modelo.Usuario;
import br.com.caelum.livraria.util.Constantes;

/**
 * @author paulo.gregorio
 *
 */
@Named
@ViewScoped
public class LoginBean implements Serializable {

    private static final long serialVersionUID = 363194016432589240L;

    private Usuario usuario = new Usuario();

    public String efetuarLogin() {

        System.out.println("Validando usuário: " + usuario);

        Usuario usuarioValidado = new UsuarioDAO().existeUsuario(this.usuario);

        FacesContext contexto = FacesContext.getCurrentInstance();

        if (usuarioValidado != null) {
            System.out.println("Usuário válido!");

            // Adicionando o usuário à sessão para autorizações futuras
            contexto.getExternalContext().getSessionMap().put(Constantes.USUARIO_LOGADO,
                    usuarioValidado);

            return "livro?faces-redirect=true";
        }

        contexto.addMessage(null, new FacesMessage("Usuário e senha inválidos! :/"));
        contexto.getExternalContext().getFlash().setKeepMessages(true);
        return "login?faces-redirect=true";
    }

    public String desconectar() {
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(Constantes.USUARIO_LOGADO);
        return "login?faces-redirect=true";
    }

    public Usuario getUsuario() {
        return usuario;
    }
}

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