如何在使用@Named和其他@ManagedBean注释的托管bean之间传递值

时间:2014-02-28 15:22:57

标签: java jsf-2 primefaces

我在我的应用程序中使用了primefaces crud生成器,生成的控制器使用@Named注释。我想从我自己创建的bean ForwardCaseBacking 中访问 TblCasePersonController 中的值,但是这给了我一个例外,如下所示。我试图将注释从@Named更改为@ManagedBean,但它仍然不起作用。

这是TblCasePersonController

@Named(value = "tblCasePersonController")
@SessionScoped
public class TblCasePersonController extends AbstractController<TblCasePerson> {

private TblCasePerson selected;
public TblCasePersonController() {
    super(TblCasePerson.class);
}

@Override
public TblCasePerson getSelected() {
    //Get the selected CasePerson
    selected = super.getSelected(); 

    TblCase tblCaseId = new TblCase();
    tblCaseId.setId(super.getIdOfSubmittedRecord());
    selected.setTblCaseId(tblCaseId);

    return selected;
}


这是ForwardCaseBacking

@ManagedBean
@ViewScoped
public class ForwardCaseBacking implements Serializable {

private int caseId;

@ManagedProperty(value="#{tblCasePersonController}")
private TblCasePersonController tblCasePersonController;

@PostConstruct
public void init(){
  if(tblCasePersonController.getSelected()!=null){
        caseId = tblCasePersonController.getSelected().getId();
    }
}


我得到此例外

例外: javax.servlet.ServletException:无法创建托管bean forwardCaseBacking。发现了以下问题:       - 托管bean forwardCaseBacking的属性tblCasePersonController不存在。检查是否存在适当的吸气剂和/或设定方法。

根本原因: com.sun.faces.mgbean.ManagedBeanCreationException:无法创建托管bean forwardCaseBacking。发现了以下问题:       - 托管bean forwardCaseBacking的属性tblCasePersonController不存在。检查是否存在适当的getter和/或setter方法。

1 个答案:

答案 0 :(得分:0)

tblCasePersonController中为ForwardCaseBacking添加setter和可选的getter。