2

私はマネージド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でうまくいっているかどうか

ご挨拶。

4

1 に答える 1

2

を使用@PostConstructするのが正しいアプローチです。

EJB は、コンストラクターが ManagedBean で呼び出された後に注入されます。

そのため、@PostConstruct注釈があります。

ドキュメントの最初の行は次のとおりです。

PostConstruct アノテーションは、初期化を実行するために依存性注入が完了した後に実行する必要があるメソッドで使用されます。

于 2013-06-12T18:02:07.440 に答える