在使用另一个ManagedBean之前实例化ManagedBean(声明为@ManagedProperty)

时间:2011-11-19 16:43:00

标签: jsf managed-bean

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

如何解决此问题?

1 个答案:

答案 0 :(得分:6)

您显然正在尝试在父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.
}