同一个bean的几个实例

时间:2013-10-30 10:37:46

标签: jsf

我编辑添加新信息:我尝试使用你所说的注释,但它仍然不起作用:

我的豆子A:

@ManagedBean(name="abean")
@ViewScoped
public class ABean {

    @ManagedProperty(value="#{b1}")
    private BBean b1;
    @ManagedProperty(value="#{b2}")
    private BBean b2;

    // getter setter


}

我的豆B:

@ManagedBean
@SessionScoped
public class BBean {

    private String a;
    private String b;

    // getter setter

    public boolean check(){
        if (a != null && !a.isEmpty() && !a.equals("0")) {
            return true;
        } else return false;
    }

}

但它仍然不起作用,b1和b2为空。

但是如果我命名我的BBbean,我的b1 bean就不再是null了:

@ManagedBean(name="b1")
@SessionScoped
public class BBean {

    private String a;
    private String b;

    // getter setter

    public boolean check(){
        if (a != null && !a.isEmpty() && !a.equals("0")) {
            return true;
        } else return false;
    }

}

所以,我觉得不可能有两个同一个bean的实例?


原始讯息:

我在另一个bean中有几个bean的实例。我无法正确使用这些bean。

我的第一个豆子A:

public class ABean {

    @ManagedProperty(value="#{b1}")
    private BBean b1;
    @ManagedProperty(value="#{b2}")
    private BBean b2;

    @PostConstruct
    public void init(){
        b1 = new BBean();
        b2 = new BBean();
    }


    }

我的第二个豆B:

public class BBean {

    private String a;
    private String b;

    // getter setter

    public boolean check(){
        if (a != null && !a.isEmpty() && !a.equals("0")) {
            return true;
        } else return false;
    }

    }

两者都在scopeView中。

我的faces-config.xml

<managed-bean>
  <managed-bean-name>aBean</managed-bean-name>
  <managed-bean-class>com.test.ABean</managed-bean-class>
  <managed-bean-scope>view</managed-bean-scope>
</managed-bean>
<managed-bean>
  <managed-bean-name>b1</managed-bean-name>
  <managed-bean-class>com.test.BBean</managed-bean-class>
  <managed-bean-scope>view</managed-bean-scope>
</managed-bean>
<managed-bean>
  <managed-bean-name>b2</managed-bean-name>
  <managed-bean-class>com.test.BBean</managed-bean-class>
  <managed-bean-scope>view</managed-bean-scope>
</managed-bean>    

在我的xhtml页面中,我有这两个这样的bean:

#{aBean.b1.check()}
#{aBean.b2.check()}

问题是对于b1,check方法永远不会返回true,即使这个方法被正确填充也是如此。 有可能像我一样继续吗?然后在父类中只有一个bean的几个实例?

0 个答案:

没有答案