我编辑添加新信息:我尝试使用你所说的注释,但它仍然不起作用:
我的豆子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的几个实例?