Problemas com login feito com JSF! Alguém pode me ajudar?
30 respostas
rafapilao
Boa tarde, fiz um sistema e implementei o login só que quando tento entrar ele dá null e não aceitando a entrada. O que posso fazer para corrigir isso? Será que está faltando algo no código?
LoginBean.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageview.bean;importcontroller.dao.AdministradorDeRHDAO;importcontroller.dao.FuncionarioDAO;importjavax.faces.application.FacesMessage;importjavax.faces.context.FacesContext;importjavax.servlet.http.HttpSession;importmodel.AdministradorDeRH;importmodel.Funcionario;/** * * @author Rafael */publicclassLoginBean{privateStringlogin;privateStringsenha;publicStringgetLogin(){returnlogin;}publicvoidsetLogin(Stringlogin){this.login=login;}publicStringgetSenha(){returnsenha;}publicvoidsetSenha(Stringsenha){this.senha=senha;}publicStringverificaLogin(){if(getLogin()!=null&&getSenha()!=null&&login.equalsIgnoreCase(senha)){HttpSessionsession=(HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);AdministradorDeRHadm=newAdministradorDeRH();adm.setLogin(login);adm.setSenha(senha);AdministradorDeRHDAOdao=newAdministradorDeRHDAO();Funcionariofun=newFuncionario();fun.setLogin(login);fun.setSenha(senha);FuncionarioDAOda=newFuncionarioDAO();if(dao.efetuarLogin(adm)){session.getAttribute(login);session.getAttribute(senha);return"home.jsp";}elseif(da.efetuarLogin(fun)){session.getAttribute(login);session.getAttribute(senha);return"home.jsp";}else{return"indexhotel.jsp";}}else{FacesContext.getCurrentInstance().addMessage(null,newFacesMessage("Usuario e/ou senha incorretos!"));HttpSessionsession=(HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);returnnull;// NULL ou ?? mantem na mesma pagina. }}}
sem contar que se não existir a session ele vai retornar null.
Mais um detalhe, com JSF você não deveria estar se preocupando e mexendo com session manualmente, reveja a maneira de utilizá-lo.
rafapilao
eu entro na página de login tranquilamente, mas ao acessar ele gera o erro imediatamente. Bom vc disse que não preciso me preocupar com a session, mais não tenho outra idéia de como fazer isso. Por isso tentei dessa forma.
Javabuntu:
ele carrega a página? ou dá null quando tenta submeter?
coloque o erro se possível, e outra coisa, essa parte no seu else não faz nada.
sem contar que se não existir a session ele vai retornar null.
Mais um detalhe, com JSF você não deveria estar se preocupando e mexendo com session manualmente, reveja a maneira de utilizá-lo.
espera aí que agora tá confuso! :?
Você disse que nem carrega e gera esse erro. Qual erro?
depois você disse que entra no login normalmente, mas ao acessar ELE gera o erro imediatamente.
ELE quem? qual erro ?
afinal sua tela de login aparece ou não? o erro é ao tentar clicar no botão de logar?
Javabuntu
javax.servlet.ServletException: /indexhotel.jsp(32,23) '#{loginBean.login}' Target Unreachable, identifier 'loginBean' resolved to null
você realmente tem um bean declarado no faces-config com nome de loginBean?
rafapilao
Acabei de ver aqui e não tenho. Só que o form de login está dentro da minha página principal e ela está no faces-config com o nome index. Mais terei que criar o loginBean lá?
Javabuntu:
javax.servlet.ServletException: /indexhotel.jsp(32,23) '#{loginBean.login}' Target Unreachable, identifier 'loginBean' resolved to null
você realmente tem um bean declarado no faces-config com nome de loginBean?
Javabuntu
rafapilao:
Acabei de ver aqui e não tenho. Só que o form de login está dentro da minha página principal e ela está no faces-config com o nome index. Mais terei que criar o loginBean lá?
Javabuntu:
javax.servlet.ServletException: /indexhotel.jsp(32,23) '#{loginBean.login}' Target Unreachable, identifier 'loginBean' resolved to null
você realmente tem um bean declarado no faces-config com nome de loginBean?
sim, tem que declarar o bean.
rafapilao
Ok. agradeço.
Javabuntu:
rafapilao:
Acabei de ver aqui e não tenho. Só que o form de login está dentro da minha página principal e ela está no faces-config com o nome index. Mais terei que criar o loginBean lá?
Javabuntu:
javax.servlet.ServletException: /indexhotel.jsp(32,23) '#{loginBean.login}' Target Unreachable, identifier 'loginBean' resolved to null
você realmente tem um bean declarado no faces-config com nome de loginBean?
sim, tem que declarar o bean.
rafapilao
Boa tarde, fiz o que vc me falou, adicionei o loginBean no faces-config, fiz a ligação da página principalindex.jsp, com o login.jsp e o LoginBean.java. Continua dando o mesmo erro e loginBean continua nulo.
rafapilao:
Ok. agradeço.
Javabuntu:
rafapilao:
Acabei de ver aqui e não tenho. Só que o form de login está dentro da minha página principal e ela está no faces-config com o nome index. Mais terei que criar o loginBean lá?
Javabuntu:
javax.servlet.ServletException: /indexhotel.jsp(32,23) '#{loginBean.login}' Target Unreachable, identifier 'loginBean' resolved to null
você realmente tem um bean declarado no faces-config com nome de loginBean?
sim, tem que declarar o bean.
marcioferreirass
Crie um construtor para o seu loginBean e então inicialize os atributos:
Ex: login = new String(""); senha = new String("");
rafapilao
Não mudou nada continua dando erro.
marcioferreirass:
Crie um construtor para o seu loginBean e então inicialize os atributos:
Ex: login = new String(""); senha = new String("");
marcioferreirass
rafapilao:
Não mudou nada continua dando erro.
marcioferreirass:
Crie um construtor para o seu loginBean e então inicialize os atributos:
Ex: login = new String(""); senha = new String("");
Posta o seu faces-config.xml ai !
rafapilao
marcioferreirass:
rafapilao:
Não mudou nada continua dando erro.
marcioferreirass:
Crie um construtor para o seu loginBean e então inicialize os atributos:
Ex: login = new String(""); senha = new String("");
Posta o seu faces-config.xml ai !
ok
faces-config
<?xml version='1.0' encoding='UTF-8'?><!-- =========== FULL CONFIGURATION FILE ================================== --><faces-configversion="1.2"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"><navigation-rule><from-view-id>/home.jsp</from-view-id><navigation-case><from-outcome>cadastro</from-outcome><to-view-id>/cadastro.jsp</to-view-id></navigation-case><navigation-case><from-outcome>alterar</from-outcome><to-view-id>/alterar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>cancelar</from-outcome><to-view-id>/cancelar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>estornar</from-outcome><to-view-id>/estornar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>consultar</from-outcome><to-view-id>/consultar.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/indexhotel.jsp</from-view-id><navigation-case><from-outcome>login</from-outcome><to-view-id>/login.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/login.jsp</from-view-id><navigation-case><from-outcome>log</from-outcome><to-view-id>/LoginBean.java</to-view-id></navigation-case></navigation-rule></faces-config>
marcioferreirass
rafapilao:
marcioferreirass:
rafapilao:
Não mudou nada continua dando erro. :cry:
marcioferreirass:
Crie um construtor para o seu loginBean e então inicialize os atributos:
Ex: login = new String(""); senha = new String("");
Posta o seu faces-config.xml ai !
ok
faces-config
<?xml version='1.0' encoding='UTF-8'?><!-- =========== FULL CONFIGURATION FILE ================================== --><faces-configversion="1.2"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"><navigation-rule><from-view-id>/home.jsp</from-view-id><navigation-case><from-outcome>cadastro</from-outcome><to-view-id>/cadastro.jsp</to-view-id></navigation-case><navigation-case><from-outcome>alterar</from-outcome><to-view-id>/alterar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>cancelar</from-outcome><to-view-id>/cancelar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>estornar</from-outcome><to-view-id>/estornar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>consultar</from-outcome><to-view-id>/consultar.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/indexhotel.jsp</from-view-id><navigation-case><from-outcome>login</from-outcome><to-view-id>/login.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/login.jsp</from-view-id><navigation-case><from-outcome>log</from-outcome><to-view-id>/LoginBean.java</to-view-id></navigation-case></navigation-rule></faces-config>
Você precisa definir o seu MB no xml.
Ex:
loginBean view.bean.LoginBean request
Isso deve ficar ai no seu faces-config.xml.
rafapilao
Fiz o que me falou e agora a tela principal não entrou de cara apareceu esse erro.
o não pode ser isso: /LoginBean.java.
Tira essa parte toda.
Tem uma outra coisa. Vc esta retornando no seu método o nome da página: Ex: "home.jsp".
Se vc esta definindo um navigation-rule, vc deve retornar o que esta entre o outcome.
rafapilao:
Fiz a alteração da forma que vc mencionou abaixo e continua dando erro.
marcioferreirass:
Cara, com esse construtor não vai.
Coloque o construtor assim:
public LoginBean(){
this.login = new String("");
this.senha = new String("");
}
rafapilao:
Ficou dessa forma.
public LoginBean(String login, String senha, boolean loginOK) {
this.login = new String(login);
this.senha = new String(senha);
this.loginOK = loginOK;
}
marcioferreirass:
rafapilao:
Ficou assim
<?xml version='1.0' encoding='UTF-8'?><!-- =========== FULL CONFIGURATION FILE ================================== --><faces-configversion="1.2"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"><managed-bean><managed-bean-name>loginBean</managed-bean-name><managed-bean-class>view.bean.LoginBean</managed-bean-class><managed-bean-scope>request</managed-bean-scope></managed-bean><navigation-rule><from-view-id>/home.jsp</from-view-id><navigation-case><from-outcome>cadastro</from-outcome><to-view-id>/cadastro.jsp</to-view-id></navigation-case><navigation-case><from-outcome>alterar</from-outcome><to-view-id>/alterar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>cancelar</from-outcome><to-view-id>/cancelar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>estornar</from-outcome><to-view-id>/estornar.jsp</to-view-id></navigation-case><navigation-case><from-outcome>consultar</from-outcome><to-view-id>/consultar.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/indexhotel.jsp</from-view-id><navigation-case><from-outcome>login</from-outcome><to-view-id>/login.jsp</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/login.jsp</from-view-id><navigation-case><from-outcome>log</from-outcome><to-view-id>/LoginBean.java</to-view-id></navigation-case></navigation-rule></faces-config>
Vc colocou o construtor no seu loginBean ?
Posta aqui ...
rafapilao
Não tenho boas notícias, deu o seguinte erro ao tirar o /LoginBean.java do faces-config nem abriu a tle principal, no próprio IDE ele deu falha na construção. E também mudei o coloquei o “log” no lugar do “home.jsp” no método, isso não influenciou. Tá brabo.
É meu velho. Recomendo vc começar um outro projeto !
Como última tentativa, verifique se a classe que vc esta criando esta realmente no pacote informado e se arquivos .class estão sendo gerados na parta correta.
Boa sorte!
rafapilao
Ok, agradeço a vossa ajuda e a vossa paciência, vou tentando. Caso não dê recomeçarei. Abraço.
marcioferreirass:
É meu velho. Recomendo vc começar um outro projeto !
Como última tentativa, verifique se a classe que vc esta criando esta realmente no pacote informado e se arquivos .class estão sendo gerados na parta correta.