Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将托管sessonbean注入实体?JSF素数面_Jsf_Jsf 2_Localization_Entity_Managed Property - Fatal编程技术网

如何将托管sessonbean注入实体?JSF素数面

如何将托管sessonbean注入实体?JSF素数面,jsf,jsf-2,localization,entity,managed-property,Jsf,Jsf 2,Localization,Entity,Managed Property,我想将托管会话Bean注入JSF中的一个实体 我需要根据用户在前端选择的语言环境显示不同的状态文本。(国际化)对于一个状态ID,我有4个状态文本,即StatusText、StatusTextLang1、StatusTextLang2、StatusTextLang3 为了支持这个特性,我正在修改StatusText属性的getter方法。这里我想从SessionBean中获取区域设置。因为它是一个实体,所以我得到一个空的sessionBean @Entity @Table(name="Projek

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

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

为了支持这个特性,我正在修改StatusText属性的getter方法。这里我想从SessionBean中获取区域设置。因为它是一个实体,所以我得到一个空的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");

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

在我看来,您试图用实体中的代码解决视图问题,这是一个非常糟糕的设计。为什么不给SessionBean本身添加一个方法来获得正确的文本呢?同意你的观点,问题是如果我这样做,我最终会在很大程度上进行更改。我有11个这样的实体和大约60个使用这些列的屏幕。还有什么解决办法@Gimby你不是在向我描述问题。11个实体和60个屏幕算不了什么。好吧,问题是我已经有60个页面在使用这个字段的地方了(直接在填充时)。现在,如果我要在SessionBean中进行更改,那么我必须在所有60页中进行更改。然而,如果我更新这个字段的getter方法的代码,所有出现的情况都会自动生效。我得到的唯一问题是,我无法将sessionBean注入到实体中,所以我可以确定从前端选择哪种语言@gimbyIt不仅不好(gr8是2010年的Sooo),它还使一个糟糕的解决方案(现有代码)变得更糟。。。在你之后的其他人很可能不明白为什么会这样做,并为此诅咒你。。。只需花一天时间重构所有的。它“只是”11个实体和60个屏幕。正如Kukeltje所说,这是一个糟糕的决定。。。与创建错误代码相比,最好更改11个实体和60个屏幕