2

当我在托管的构造函数中并尝试从其他 bean 访问其他方法时,我得到了java.lang.NullPointerException. 是否有某种规范不允许托管 bean 这样做?

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

@EJB
DocumentSBean sBean;

public NewUserController() {
    document.list();
} 

上面我只是做常规的 bean 注入,没什么特别的。document是一个SessionScoped托管 bean,它的方法list()只返回一个String. NewUserController是一个RequestScoped托管bean。

4

2 回答 2

8

您应该查看@PostConstruct。 一个例子可以在这里找到。

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

  1. 创建 Bean
  2. 设置属性

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

因此您的代码可以更改为:

public NewUserController() { }

@PostConstruct
public void init() {
    document.list();
}
于 2010-09-01T15:36:56.300 回答
0

DisplayListController 可能应该配置为使用列表方法上的 @PostConstruct 注释调用自己的 init 方法

于 2010-09-01T15:44:42.477 回答