Search code examples
javajsfjakarta-eemanaged-bean

java.lang.NullPointerException, when i am inside the constructor of a managed bean invoking methods from other beans


When I am inside the constructor of a managed and trying to reach out to other methods from other beans, I got java.lang.NullPointerException. Is there some kind of specification that not allow managed bean to do that?

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

@EJB
DocumentSBean sBean;

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

Above I just do regular bean injection, nothing fancy. document is a SessionScoped managed bean that has method list() which just return a String. NewUserController is a RequestScoped managed bean.


Solution

  • You should look into @PostConstruct. An example can be found here.

    Your properties are not being set when you're trying to access them. You need to wait for them to be set. Bean management typically goes:

    1. Create Beans
    2. Set Properties

    You're trying to use properties that have not been set, thus resulting in your NPE.

    So your code could change to:

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