如何将托管sessonbean注入实体?JSF素数面
我想将托管会话Bean注入JSF中的一个实体 我需要根据用户在前端选择的语言环境显示不同的状态文本。(国际化)对于一个状态ID,我有4个状态文本,即StatusText、StatusTextLang1、StatusTextLang2、StatusTextLang3 为了支持这个特性,我正在修改StatusText属性的getter方法。这里我想从SessionBean中获取区域设置。因为它是一个实体,所以我得到一个空的sessionBean如何将托管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
@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个屏幕