olá amigos, tenho um sistema com jsf e hibernate e tenho uma login que ta funcionando normal, mais eu queria que quando o usuario fizesse o login,
ele entrasse e tivesse a mensagem Bem vindo: usuario.
o código de login ta aqui, mais não estou entendendo como ta funcionando essa sessão, la no faces config o escopo ta como seção.
public String login() throws Exception{
boolean logado = false;
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
PessoaFacade pessoaService = new PessoaFacadeImpl();
privatestaticfinallongserialVersionUID=-333995781063775201L;privatePessoapessoa=newPessoa();privateLongid;publicPessoaMB(){System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do PESSOA_MB <<<<<<<<<<<<<<<<<<");if(this.pessoa==null){this.pessoa=newPessoa();}}publicStringlogin()throwsException{booleanlogado=false;HttpSessionsession=(HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);HttpServletResponserp=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();HttpServletRequestrq=(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();PessoaFacadepessoaService=newPessoaFacadeImpl();logado=pessoaService.autentica(this.pessoa.getEmail(),this.pessoa.getSenha());if(logado){session.setAttribute("user",logado);rp.sendRedirect(rq.getContextPath()+"/pages/index.jsf");return"success";}else{session.setAttribute("user",null);session.removeAttribute("user");rp.sendRedirect(rq.getContextPath()+"/pages/login/login.jsf");return"failure";}}publicStringlogout(){HttpServletRequestrq=(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();HttpServletResponserp=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();FacesContextfacesContext=FacesContext.getCurrentInstance();HttpSessionsession=(HttpSession)facesContext.getExternalContext().getSession(false);session.invalidate();try{rp.sendRedirect(rq.getContextPath()+"/pages/login/login.jsf");}catch(IOExceptione){e.printStackTrace();}return"logoutOk";}publicStringsave(){PessoaFacadepessoaService=newPessoaFacadeImpl();pessoaService.salva(this.pessoa);this.pessoa=newPessoa();return"cadastraSucesso";}publicStringdelete(){PessoaFacadepessoaService=newPessoaFacadeImpl();this.pessoa.setId(id);pessoaService.remove(this.pessoa);this.pessoa=newPessoa();return"removeSucesso";}publicStringmerge(){PessoaFacadepessoaService=newPessoaFacadeImpl();pessoaService.atualiza(this.pessoa);this.pessoa=newPessoa();return"atualizaSucesso";}publicStringload(){PessoaFacadepessoaService=newPessoaFacadeImpl();this.pessoa=pessoaService.procura(this.id);return"pesquisaSucesso";}publicStringpesquisaByNome(){PessoaFacadeImplpessoaService=newPessoaFacadeImpl();this.pessoa=pessoaService.procuraByNome(this.pessoa.getNome());return"pesquisaByNomeSucesso";}publicList<Pessoa>getPessoas(){PessoaFacadepessoaService=newPessoaFacadeImpl();returnpessoaService.lista();}publicList<Pessoa>getPessoasByNome(){PessoaFacadepessoaService=newPessoaFacadeImpl();List<Pessoa>lista=pessoaService.pesquisaPessoasByNome(this.pessoa.getNome());returnlista;}publicPessoagetPessoa(){returnpessoa;}publicvoidsetPessoa(Pessoapessoa){this.pessoa=pessoa;}publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}
}
o faces-config:
pessoaMB
br.com.serjaum.mb.PessoaMB
session
danieldomingues86
Olá,
O que acontece é que voce não está atribuindo a informaçao que precisa ao #{pessoaMB.pessoa.nome} no momento da chamada do metodo login().
Voce precisa no momento do login preencher esse objeto Pessoa pessoa = new Pessoa(); para que assim que a página for carregada, já conter
a informaçao dentro do objeto pessoa mostrando assim a informação na tela.
Entendeu?
Abraços
Daniel.
E
emanueljava
cara me desculpe mais não entendi, por que sou iniciante, vc poderia me dar um ex?
na minha classe pessoamb está private Pessoa = new Pessoa();
onde tenho que fazer? é no metodo login?
Obrigado!!!
danieldomingues86
Bem vamos lá
No método login onde voce faz :
logado = pessoaService.autentica(this.pessoa.getEmail(), this.pessoa.getSenha());
Sugiro que altere isso e passe a retornar um objeto pessoa contendo suas informaçoes em vez de um boolean, ficando assim :
pessoa = pessoaService.autentica(this.pessoa.getEmail(), this.pessoa.getSenha());
Perceba que aqui eu já preencho a referencia do seu objeto Pessoa, assim caso esse objeto tenha um nome ele já será preenchido na tela no momento do carregamento da tela.