我有这种情况:


由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时,itemnull

我应该使用依赖项注入包括:

@ManagedProperty("#{dettaglioBean}") //+ setter
private DettaglioBean dettaglioBean;


loginBean中?

最佳答案

您可以通过将loginBean注入到dettaglioBean中而不是相反的方式来访问loginBean中的值,因为这是您在dettaglioBean中所需的loginBean中的值。

 @ManagedProperty("#{loginBean}")
 private LoginBean loginBean;


当JSF实现遍及EL时,它将在各种作用域图中搜索Bean对象,并在找到它时将其注入到您的dettaglioBean中。

10-01 22:07