我有一个托管 Bean:
public class CategoriaManagedBean {
@EJB
private CategoriaBeanLocal categoriaBean;
private Categoria categoria;
private List<Categoria> menu;
}
在我的构造函数中我尝试:
public CategoriaManagedBean() {
menu = categoriaBean.findByIdCategoriaPadre(0);
}
但是我收到错误“无法创建类的实例”,为什么我无法在构造函数中初始化属性?
我解决了这个问题:
@PostConstruct
public void init() {
menu = categoriaBean.findByIdCategoriaPadre(0);
}
但我想知道原因以及我是否与 @PostConstruct 配合得很好
问候。
最佳答案
使用@PostConstruct
才是正确的做法。
在 ManagedBean 上调用构造函数之后注入(inject) EJB。
这就是为什么有 @PostConstruct
注释。
这是 the documentation 的第一行:
The PostConstruct annotation is used on a method that needs to be executed after dependency injection is done to perform any initialization.
关于dependency-injection - 为什么我不能在 Managed Bean 构造函数中使用 Init 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072130/