开发者

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

开发者 https://www.devze.com 2023-01-14 05:16 出处:网络
When I am inside the constructor of a managed and trying to reach out to other methods from other beans, I got ja开发者_如何学Pythonva.lang.NullPointerException. Is there some kind of specification th

When I am inside the constructor of a managed and trying to reach out to other methods from other beans, I got ja开发者_如何学Pythonva.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.


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


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

0

精彩评论

暂无评论...
验证码 换一张
取 消