我想@SessionScoped
使用@ManagedProperty
. 总之就是想访问secondBean中firstBean的name属性。
@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
}
第二个豆子:
@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;
}
当我运行这个时,我总是NullPointerException
在System.out.println(firstBean.getName());
第二个 bean 的构造函数中,这似乎意味着我需要创建一个新的firstBean
.
但奇怪的是,当我注释掉这一行时,我可以毫无错误地做这样的事情,这意味着 firstBean 实际上是 secondBean 的一个属性。
<h:outputText value="#{secondBean.firstBean.name}" />
这里有什么问题?