pessoal,
tenho um objeto cliente que é um @SessionScoped
em outro MB eu preciso obter esse cliente, como eu consigo obter esse objeto?
assim:
Cliente clienteLogado = (Cliente) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(new Cliente());
??
Jovem,
Fugindo totalmente dos meus principios como professor, segue mais uma resposta pronta para uso, visto que a resposta para este questionamento pode ser encontrado facilmente num tal de Google:
enjoy, have fun:
ELContext eLContext = FacesContext.getCurrentInstance().getFacesContext().getELContext();
Object bean = eLContext.getELResolver().getValue(eLContext, null,"nomeDoBean");
Abs.
Aqui vão 2 maneiras para fazer isso.
1 - Injeção de dependência
Bean de sessão:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class SessaoBean {
private String atributo;
public String getAtributo() {
return atributo;
}
public void setAtributo(String atributo) {
this.atributo = atributo;
}
}
Bean que vai chamar o bean de sessão:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean
public class AlgumBean {
@ManagedProperty(value="#{sessaoBean}")
private SessaoBean sessaoBean;
public void fazerAlgumaCoisa(){
sessaoBean.getAtributo();
}
public SessaoBean getSessaoBean() {
return sessaoBean;
}
public void setSessaoBean(SessaoBean sessaoBean) {
this.sessaoBean = sessaoBean;
}
}
lembrando de colocar os getters e setters.
2 - Pegar diretamente pelo FacesContext
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) externalContext.getSession(true);
SessaoBean sessaoBean= (SessaoBean )session.getAttribute("sessaoBean ");
lembrando que esse último você pode pegar também pelo “getSessionMap()” semelhante o que você fez.
.getSessionMap().get("sessaoBean ")
Escolha o que for mais viável para seu caso.
vlw ayslanms, decidi pegar da última forma só que do jeito certo né!
vlw!