我有这种情况:
由loginBean.java管理的page1.xhtml
由dettaglioBean.java管理的page2.xhtml
我在goToDetail(String item)
中有一个loginBean
方法,当选择项目时,该方法应导致page2.xhtml。
当我尝试将属性从loginBean
传递给dettaglioBean
时,呈现page2.xhtml或引发null
时,属性在dettaglioBean
中是@PostConstruct
。
这是goToDetail
方法:
public String goToDetail(VStatoavanzamentoriep item) {
FacesContext context = FacesContext.getCurrentInstance();
DettaglioBean bean = (DettaglioBean) context.getApplication().evaluateExpressionGet(context, "#{dettaglioBean}", DettaglioBean.class);
bean.setItem(item);
return Constants.PageID.DettaglioID;
}
并且
dettaglioBean
在faces-config.xml中声明为managedBean
当我转到page2.xhtml时,
item
是null
。我应该使用依赖项注入包括:
@ManagedProperty("#{dettaglioBean}") //+ setter
private DettaglioBean dettaglioBean;
在
loginBean
中? 最佳答案
您可以通过将loginBean注入到dettaglioBean中而不是相反的方式来访问loginBean中的值,因为这是您在dettaglioBean中所需的loginBean中的值。
@ManagedProperty("#{loginBean}")
private LoginBean loginBean;
当JSF实现遍及EL时,它将在各种作用域图中搜索Bean对象,并在找到它时将其注入到您的dettaglioBean中。