【问题标题】:Why can't I Init attribute in Managed Bean constructor?为什么我不能在托管 Bean 构造函数中初始化属性?
【发布时间】:2013-06-08 22:57:51
【问题描述】:

我有一个托管 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 做得很好

您好。

【问题讨论】:

    标签: dependency-injection ejb managed-bean postconstruct


    【解决方案1】:

    使用@PostConstruct 是正确的方法。

    EJB 是在在 ManagedBean 上调用构造函数之后注入的。

    这就是为什么有一个@PostConstruct 注释。

    这是the documentation的第一行:

    PostConstruct 注解用于需要在依赖注入完成后执行任何初始化的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多