Поскольку вы используете CDI, вы не должны использовать @ManagedBean
(это аннотация JSF). Хотя я на самом деле видел, как это работает, большинство реализаций не позволяют вам вводить компонент CDI в классический компонент JSF.
Чтобы разрешить внедрение CDI в bean-компонентах JSF, спецификация CDI позволяет определять базовые bean-компоненты JSF путем указания аннотации @Named
в сочетании с областью действия (@RequestScoped
, @javax.faces.view.ViewScoped
, @SessionScoped
и @ApplicationScoped
).
Итак, вкратце, следующий фрагмент кода должен решить вашу проблему,
@Named
@RequestScoped
public class HelloWorldBean {
@Inject
private EmployeeRepository employeerepo;
public String getMsg() {
return "Hallo";
}
public String getEmployees() {
return String.valueOf(employeerepo.getEmployees().size());
}
}
Вы также можете прочитать дальше по этой теме через некоторые старые вопросы и ответы здесь на сайте,
Как внедрить компонент CDI в ManagedBean?
@ ManagedProperty не работает в управляемом компоненте CDI
Инъекция бобов CDI