Fórum Ao Davi mas outros podem postar também #400782
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
Curtir tópico
+ 0Posts
10/05/2011
Robson Teixeira
Gostei + 0
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
Gostei + 0
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
Gostei + 0
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
Gostei + 0
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;
}
Gostei + 0
10/05/2011
Pjava
Query query = em.createQuery(comando); listEscola = query.getResultList();
Assim chamo o em
private EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();
Gostei + 0
10/05/2011
Davi Costa
O atributo da httpSession ou a consulta do banco?
Att Davi
Gostei + 0
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;
}
}Gostei + 0
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
Gostei + 0
11/05/2011
Pjava
Gostei + 0
11/05/2011
Pjava
/*HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle");
Login login = loginControle.getLogin();*/
Gostei + 0
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();
}Gostei + 0
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
Gostei + 0
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";
}}Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)