据我所知,有很多方法可以在其他支持bean中获取属性。
首先是:
otherBean = (OtherBean) FacesContext.getCurrentInstance()
.getELContext()
.getELResolver()
.getValue(FacesContext
.getCurrentInstance()
.getELContext(), null, "OtherBean");
String str=otherBean.someString;
第二个是使用会话地图:
(将参数设置为其他Bean中的会话映射)
FacesContext.getCurrentInstance()
.getExternalContext()
.getSessionMap()
.put("someString",someString);
(并获取当前Bean中的参数)
String str= (String) FacesContext.getCurrentInstance()
.getExternalContext()
.getSessionMap()
.get("someString");
最后一个是使用Annotation
@ManagedProperty("#{otherBean}")
private OtherBean otherBean;
String str=otherBean.someString;
那我应该使用哪一个?这些方法之间的区别是什么?或者上面提到的方法是否有线?
答案 0 :(得分:0)
我会永远使用最后一个,因为它只是最方便的。只有在无法使用注释注入属性或bean时才会使用FacesContext
。 FacesContext
是一个单身人士。使用FacesContext
进行单元测试代码很痛苦。
我从未见过第一种方法(使用EL解析器)在框架代码之外使用过。