I want to Inject a Managed Session Bean into an Entity in JSF.
I have a requirement where I need to show different status text based on Locale selected by User on front-end. (Internationalization) for one status ID I have 4 Status text i.e. StatusText, StatusTextLang1, StatusTextLang2, StatusTextLang3.
To support this feature, I am making changes in getter method of StatusText property. Here I want to take the Locale from SessionBean. Because Its an entity, so I am getting a null sessionBean.
@Entity
@Table(name="Projektstati")
public class Projektstati implements Serializable{
@ManagedProperty("#{sessionBean}")
private SessionBean sessionBean;
public void setSessionBean(SessionBean sessionBean){this.sessionBean = sessionBean;}
I checked few options and following worked out.
FacesContext facesContext = FacesContext.getCurrentInstance();
sessionBean = (SessionBean) facesContext.getApplication()
.getVariableResolver().resolveVariable(facesContext, "sessionBean");
It may be not a great design but definitely a quick solution.