java.lang.NullPointerException,当我在托管bean的构造函数内部调用其他bean的方法时

Tha*_*ham 2 java jsf java-ee managed-bean

当我在一个托管的构造函数内部并试图与其他bean的其他方法联系时,我得到了java.lang.NullPointerException.是否有某种规范不允许托管bean这样做?

@ManagedProperty(value="#{document}")
private DisplayListController document;

@EJB
DocumentSBean sBean;

public NewUserController() {
    document.list();
} 
Run Code Online (Sandbox Code Playgroud)

上面我只是做常规豆注射,没什么花哨的.document是一个SessionScoped托管bean,其方法list()只返回一个String.NewUserController是一个RequestScoped托管bean.

NG.*_*NG. 8

你应该看看@PostConstruct.这里 可以找到一个例子.

当您尝试访问它们时,未设置您的属性.您需要等待它们被设置.Bean管理通常会:

  1. 创造豆类
  2. 设置属性

您正在尝试使用尚未设置的属性,从而导致您的NPE.

所以你的代码可以改为:

public NewUserController() { }

@PostConstruct
public void init() {
    document.list();
}
Run Code Online (Sandbox Code Playgroud)