我在另一个@ManagedBean
内使用@ManagedProperty
(请求作用域)作为@ManagedBean
。但是,在使用时,bean(用作@ManagedProperty
的一个)未实例化,因此导致NullPointerException
。
如何解决此问题?
答案 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.
}