Search code examples
jsfjsf-2localizationentitymanaged-property

How to inject Managed Sesson Bean into Entity? JSF-PrimeFaces


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;}

Solution

  • 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.