我编辑以添加新信息:我尝试使用您所说的注释,但它仍然不起作用:
我的豆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 不再为空:
@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 的实例。我无法正确使用这些豆子。
我的第一个豆 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 中。
我的面孔-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()}
问题是 check 方法永远不会为 b1 返回 true,即使该方法已正确填充。是否可以像我一样进行?然后在父类中只有一个 bean 的多个实例?