如何在managedBean之间传递参数

时间:2013-12-28 12:51:22

标签: java jsf-2 primefaces managed-bean

我有这种情况:

  1. page1.xhtml由loginBean.java管理
  2. page2.xhtml由dettaglioBean.java管理
  3. 我在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

2 个答案:

答案 0 :(得分:0)

有一些方法可以在托管bean中发送或设置数据。请阅读BalusC的答案。

相关文章

https://stackoverflow.com/a/4994833/892994

答案 1 :(得分:0)

您可以通过将loginBean注入dettaglioBean而不是反过来来访问loginBean中的值,因为它是dettaglioBean中您需要的loginBean中的值。

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

当JSF实现遇到EL时,它会在各种范围映射中搜索bean对象,并在找到它时将其注入dettaglioBean。