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

时间:2010-09-01 15:26:37

标签: java jsf java-ee managed-bean

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

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

@EJB
DocumentSBean sBean;

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

上面我只做常规豆注射,没什么特别的。 document是一个SessionScoped托管bean,其方法list()只返回StringNewUserControllerRequestScoped托管bean。

2 个答案:

答案 0 :(得分:8)

您应该查看@PostConstruct.可以找到一个示例here.

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

  1. Create Beans
  2. 设置属性
  3. 您正在尝试使用尚未设置的属性,从而导致您的NPE。

    所以你的代码可以改为:

    public NewUserController() { }
    
    @PostConstruct
    public void init() {
        document.list();
    }
    

答案 1 :(得分:0)

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