Почему я не могу инициализировать атрибут в конструкторе управляемого компонента?

У меня есть управляемый компонент:

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

Привет.


person Alavaros    schedule 12.06.2013    source источник


Ответы (1)


Использование @PostConstruct является правильным подходом.

Компоненты EJB внедряются после вызова конструктора ManagedBean.

Вот почему существует аннотация @PostConstruct.

Вот первая строка из документации:

Аннотация PostConstruct используется в методе, который необходимо выполнить после внедрения зависимости для выполнения любой инициализации.

person jahroy    schedule 12.06.2013