1
我想使用@ManagedProperty
访问另一个bean中的@SessionScoped
bean的属性。总之,我想访问secondBean中firstBean的name属性。无法访问另一个受管bean的托管bean的属性
@ManagedBean
@SessionScoped
public class FirstBean implements Serializable{
private String name;
//...other attributes
//...constructor
public String getSelectedModel() {
return selectedModel;
}
public void setSelectedModel(String selectedModel) {
this.selectedModel = selectedModel;
}
//other getters&setters
}
而第二个bean:
@ManagedBean
@SessionScoped
public class SecondBean implements Serializable{
@ManagedProperty(value="#{firstBean}")
private FirstBean firstBean
public SecondBean() {
System.out.println(firstBean.getName());
}
public IndexBean getFirstBean() {
return firstBean;
}
public void setFirstBean(FirstBean firstBean) {
this.firstBean = firstBean;
}
当我运行此,我总是在第二个bean,这似乎意味着,我需要创建的firstBean
一个新实例的构造函数得到NullPointerException
上System.out.println(firstBean.getName());
。
但奇怪的是,当我注释掉这一行时,我可以这样做,没有错误,这意味着firstBean实际上是secondBean的一个属性。
<h:outputText value="#{secondBean.firstBean.name}" />
这里有什么问题?