1
resposta

Não está encontrando o usuario no mysql.

Eu já inseri o usuario no mysql com o login 'admin'. Por algum motivo o usuario não está sendo encontrado. O mais curioso é que o compilador está entrando no

" if(usuarioEncontrado!= null && possuiMesmaSenha(usuarioEncontrado)) "

como se o usuário estivesse sendo encontrado mas dai eu inseri um

" System.out.println("usuario encontrado"+usuario.getLogin()); "

para testes e parece que usuario está com o valor nullo.

Resultado eu tento fazer o login mas o site apenas apaga o valor e continua na mesma pagina do login.

@Named 
@RequestScoped 
public class LoginBean {

    private Usuario usuario = new Usuario();

    @Inject
    private UsuarioDao dao;

    @Inject
    UsuarioLogadoBean usuarioLogado;

    @Inject
    MenuBean menu;

    public Usuario getUsuario() {
        return usuario;
    }

    public String efetuaLogin() {

        Usuario usuarioEncontrado = this.dao.buscaPeloLogin(usuario.getLogin());

        if(usuarioEncontrado!= null && possuiMesmaSenha(usuarioEncontrado)) {
            System.out.println("usuario encontrado"+usuario.getLogin());
            usuarioLogado.logar(usuarioEncontrado);
            return menu.paginaLivros();
        }
        System.out.println("usuario não encontrado");
        criaMensagem("Usuário não encontrado!");
        limparForm();

        return "";
    }

    public String efetuaLogout() {
        this.usuarioLogado.deslogar();
        return this.menu.paginaLogin();
    }

    private void limparForm() {
        this.usuario = new Usuario();
    }

    private void criaMensagem(String mensagem) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, mensagem, ""));
    }

    private boolean possuiMesmaSenha(Usuario usuarioEncontrado) {
        return usuarioEncontrado.getSenha().equals(usuario.getSenha());
    }
}


@Stateless
public class UsuarioDao {

    @PersistenceContext
    private EntityManager manager;

    public Usuario buscaPeloLogin(String login) {

        Usuario usuario = this.manager.createQuery("select u from Usuario u where u.login=:pLogin", Usuario.class)
                .setParameter("pLogin", login).getSingleResult();
        return usuario;
    }

}
1 resposta

Bom dia Andrey, coloca um breakpoint nessa linha:

Usuario usuario = this.manager.createQuery("select u from Usuario u where u.login=:pLogin", Usuario.class)
                .setParameter("pLogin", login).getSingleResult();

e dá um inspect em usuario para ver se realmente esta null ou vem um usuário