Ao Davi mas outros podem postar também
10/05/2011
0
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
Assim vc recupera a session e para salvar ou chamar um atributo na session basta:
getSession().setAttribute("usuarioLogado", ordemProducao.getCodigoOP());
Usuario usuario = (Usuario) getSession().getAttribute("usuarioLogado");
Esse getSession não entendi o que coloco em ordemProducao... Eu tenho uma classe Login(Apenas validacao) e LoginDAO que persiste e etc... Esse tipo Usuario equivale a que? Para mim LoginDAO, mas dá erro nessa implementação.
Pjava
Posts
10/05/2011
Robson Teixeira
10/05/2011
Davi Costa
talvez seja interessante vc pesquisar como recuperar esse session do glassfish.
Akele lib que havia comentado antes é da servlet api, caso não funcione add essse jar, vc pode pesquisar como recuperar a session da app pelo glassfish.
Att Davi
10/05/2011
Pjava
public class LoginDAO extends DAOGenerico<Login> { public LoginDAO(EntityManager em) { super(em); } @SuppressWarnings("unchecked") public List<Login> buscaLogin(String loginProcurado) { Query q = em.createQuery("from Login l where l.login = :loginProcurado"); q.setParameter("loginProcurado", loginProcurado); List<Login> listaLogin = q.getResultList(); return listaLogin; } @SuppressWarnings("unchecked") public List<Login> getLogins(){ Query q = em.createQuery("from Login"); List<Login>listLogin = q.getResultList(); return listLogin; } }
LoginDAO usuario = (LoginDAO) getSession().getAttribute("usuarioLogado");
Agora a outra linha dá erro
10/05/2011
Davi Costa
Vc deve pegar não uma lista, mas sim um único resultado.
basta filtrar pelo login e senha.
Caso a consulta do banco seja diferente de vazio vc usa um setAtribute("usuario", objeto);
Na session httpSession, não é em outra session não.
Cuidado com a separação de camadas como falei, não é interessante mantermos um httpSession na camada de negócio não.Veja os conceitos de SOLID(
http://lellysinformatica.com/blog/2011/05/pilula-de-arquitetura-principios-solid/
http://ianntech.com.br/2011/01/09/principios-solid-de-desenvolvimento-oo-the-open-closed-principle/)...
em miúdos onde eu kero chegar, cada camada cuida do seu.
Dá uma olhada nesses links:
http://netbeans.org/kb/docs/javaee/ecommerce/manage-sessions_pt_BR.html
http://www.slideshare.net/joaosavio/minicurso-java-server-faces
http://www.caelum.com.br/curso/fj-21-java-web/ (baixa o pdf)
Att davi
10/05/2011
Pjava
List <Escola> listEscola = null;
try {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle");
Login login = loginControle.getLogin();
//em.getTransaction().begin();
String comando = "select distinct esc from Escola esc ,Matricula mat" +
" where mat.idescola = esc.idescola" +
" and mat.idpessoa = " + login.getPessoa().getIdPessoa() +
" and mat.situacao = 'A' order by esc.nome";
Query query = em.createQuery(comando);
listEscola = query.getResultList();//Quero por um break aqui e não tá parando
} catch (Exception e) {
e.printStackTrace();
//if(em.getTransaction().isActive()){
//em.getTransaction().rollback();
//}
}finally{
em.close();
}
return listEscola;
}
10/05/2011
Pjava
Query query = em.createQuery(comando); listEscola = query.getResultList();
Assim chamo o em
private EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();
10/05/2011
Davi Costa
O atributo da httpSession ou a consulta do banco?
Att Davi
11/05/2011
Pjava
public class EntityManagerFactorySingleton { private static EntityManagerFactory instancia = null; private EntityManagerFactorySingleton() { } public static EntityManagerFactory getInstance() { if (instancia == null){ instancia = Persistence.createEntityManagerFactory("puMosaicoDigital"); } return instancia; } }
11/05/2011
Davi Costa
Já que não consegue debugar., pq o ieal seria debugar, como vc diz q a query está correta, pelo que o sql do console gera?.. é isso? pq se ele mostra a query no console, em.createQuery(comando) não está null que até a query ele executou, por isso gera sql no console.
Att Davi
11/05/2011
Pjava
11/05/2011
Pjava
/*HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle");
Login login = loginControle.getLogin();*/
11/05/2011
Pjava
public int retornaLogado(){ System.out.println("Entrando no HttpSession"); HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle"); Login login = loginControle.getLogin(); System.out.println("Novo valor de idpessoa: " + login.getPessoa().getIdPessoa()); return login.getPessoa().getIdPessoa(); }
11/05/2011
Davi Costa
Na ação de logar no sistema vc deve colocar:
session.setAttribute("LoginControle", seuObjeto);
Para aí sim num momento futuro vc recuperar com:
session.getAttribute("LoginControle");
Att Davi
11/05/2011
Pjava
public class LoginControle { private Login login = new Login(); private boolean logado = false; public boolean isLogado() { return logado; } public void setLogado(boolean logado) { this.logado = logado; } public String entrar(){ Login loginValidado = login.validaLogin(getLogin()) ; String ret = null; if(loginValidado == null){ ResourceBundle bundle = CapturaLocale.getBundleLocale(); FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, bundle.getString("msgLoginSenhaInvalidos"), null); FacesContext.getCurrentInstance().addMessage(null, message); }else{ setLogin(loginValidado); String tipoPessoa = loginValidado.getPessoa().getTipoPessoa().getValor(); if(tipoPessoa.equalsIgnoreCase(EnumTipoPessoa.P.getValor())){ ret = "professor"; }else if(tipoPessoa.equalsIgnoreCase(EnumTipoPessoa.A.getValor())){ ret = "aluno"; }else if(tipoPessoa.equalsIgnoreCase(EnumTipoPessoa.C.getValor())){ ret = "coordenador"; }else if(tipoPessoa.equalsIgnoreCase(EnumTipoPessoa.R.getValor())){ ret = "administrador"; } HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); logado = true; session.setAttribute("autenticado", true); } return ret; } public String sair(){ HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); session.removeAttribute("autenticado"); setLogin(new Login()); return "sair"; }}
11/05/2011
Davi Costa
session.getAttribute("autenticado");
Só que ele está colocando na session é true.. rsrs
ele deveria colocar o objeto Usuario do seu sistema, e caso o login falhe não coloca nada na session, para vc recuperaro usuario logado da app.
Att Davi
Clique aqui para fazer login e interagir na Comunidade :)