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

Raj*_*pta 1 jsf managed-bean

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

我该如何解决这个问题?

Bal*_*usC 6

您显然正在尝试在父bean的构造函数中访问它.这确实是不可能的.管理的物业在施工后注入.

ParentBean parentBean = new ParentBean(); // Constructor invoked.
parentBean.setChildBean(new ChildBean()); // Managed property set.
Run Code Online (Sandbox Code Playgroud)

最早的接入点是一种@PostConstruct方法.它是在构造托管属性(以及所有其他依赖性@EJB)注入之后调用的.

@ManagedProperty("#{childBean}")
private ChildBean childBean;

@PostConstruct
public void init() {
    System.out.println(childBean); // Not null.
}
Run Code Online (Sandbox Code Playgroud)