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

StackOverflow https://stackoverflow.com/questions/3619682

Question

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.

Was it helpful?

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();
}

OTHER TIPS

DisplayListController should probably be configured to call its own init method with the @PostConstruct annotation on the list method

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top