使用哪种方式访问​​JSF中其他Bean中的参数

时间:2013-12-05 03:09:40

标签: jsf-2 jsf-2.2

据我所知,有很多方法可以在其他支持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;

那我应该使用哪一个?这些方法之间的区别是什么?或者上面提到的方法是否有线?

1 个答案:

答案 0 :(得分:0)

我会永远使用最后一个,因为它只是最方便的。只有在无法使用注释注入属性或bean时才会使用FacesContextFacesContext是一个单身人士。使用FacesContext进行单元测试代码很痛苦。

我从未见过第一种方法(使用EL解析器)在框架代码之外使用过。