【问题标题】:Instantiate a ManagedBean (declared as @ManagedProperty) before using inside another ManagedBean在另一个 ManagedBean 中使用之前实例化一个 ManagedBean(声明为 @ManagedProperty)
【发布时间】:2011-11-19 16:43:00
【问题描述】:

我在另一个@ManagedBean 中使用@ManagedBean(请求范围)作为@ManagedProperty。但是,使用时的 bean(用作@ManagedProperty)是未实例化的,因此会导致NullPointerException

我该如何解决这个问题?

【问题讨论】:

    标签: jsf managed-bean


    【解决方案1】:

    您显然试图在父 bean 的构造函数中访问它。这确实是不可能的。托管属性在构造后注入。

    ParentBean parentBean = new ParentBean(); // Constructor invoked.
    parentBean.setChildBean(new ChildBean()); // Managed property set.
    

    最早的访问点是@PostConstruct 方法。它在构造托管属性(以及所有其他依赖项,如@EJB)注入后调用。

    @ManagedProperty("#{childBean}")
    private ChildBean childBean;
    
    @PostConstruct
    public void init() {
        System.out.println(childBean); // Not null.
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 2011-07-15
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 2011-05-27
      • 2014-12-06
      • 2021-11-09
      • 1970-01-01
      相关资源
      最近更新 更多