如何将Managed Sesson Bean注入实体? JSF-PrimeFaces

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

我想将托管会话 Bean 注入 JSF 中的实体。

我有一个要求,需要根据用户在前端选择的区域显示不同的状态文本。 (国际化)对于一个状态 ID,我有 4 个状态文本,即 StatusText、StatusTextLang1、StatusTextLang2、StatusTextLang3。

为了支持此功能,我正在更改 StatusText 属性 的 getter 方法。在这里,我想从 SessionBean 中获取 Locale。因为它是一个实体,所以我得到一个空的 sessionBean。

@Entity
@Table(name="Projektstati")
public class Projektstati implements Serializable{

@ManagedProperty("#{sessionBean}")
private SessionBean sessionBean;
public void setSessionBean(SessionBean sessionBean){this.sessionBean = sessionBean;}

我检查了几个选项,然后就解决了。

FacesContext facesContext = FacesContext.getCurrentInstance();
    sessionBean = (SessionBean) facesContext.getApplication()
        .getVariableResolver().resolveVariable(facesContext, "sessionBean");

这可能不是一个很好的设计,但绝对是一个快速的解决方案。