【问题标题】:java.lang.NullPointerException, when i am inside the constructor of a managed bean invoking methods from other beansjava.lang.NullPointerException,当我在托管 bean 的构造函数中调用其他 bean 的方法时
【发布时间】:2011-04-06 21:19:46
【问题描述】:

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

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

@EJB
DocumentSBean sBean;

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

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

【问题讨论】:

    标签: java jsf jakarta-ee managed-bean


    【解决方案1】:

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

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

    1. 创建 Beans
    2. 设置属性

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多