【发布时间】:2011-11-19 16:43:00
【问题描述】:
我在另一个@ManagedBean 中使用@ManagedBean(请求范围)作为@ManagedProperty。但是,使用时的 bean(用作@ManagedProperty)是未实例化的,因此会导致NullPointerException。
我该如何解决这个问题?
【问题讨论】:
标签: jsf managed-bean
我在另一个@ManagedBean 中使用@ManagedBean(请求范围)作为@ManagedProperty。但是,使用时的 bean(用作@ManagedProperty)是未实例化的,因此会导致NullPointerException。
我该如何解决这个问题?
【问题讨论】:
标签: jsf managed-bean
您显然试图在父 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.
}
【讨论】: