Почему я не могу инициализировать атрибут в управляемом конструкторе 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

Приветствую.

1 2

1 ответ:

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

EJBs вводятсяпосле того, как конструктор вызывается на ManagedBean.

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

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

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