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:
- Create Beans
- 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
精彩评论