Ответ 1
Вы смешиваете управляемый JSF beans с CDI beans. Ваш LoginBean - это управляемый JSF bean (он имеет аннотацию @ManagedBean
). Ваш MessageBean - это CDI bean (у него есть аннотация @Named
). Если вы изменили сообщение bean на управляемый JSF bean (заменив @Named
на @ManagedBean
), тогда проблема должна быть решена (она также должна работать с двумя CDI beans).
Ниже приведен краткий обзор того, как инъекция работает между типами bean:
CDI @Named → CDI @Named (работает)
CDI @Named → JSF @ManagedBean (работает только в том случае, если объем вложенных bean шире)
JSF @ManagedBean → JSF @ManagedBean (работает только в том случае, если объем вложенных bean более широк)
JSF @ManagedBean → CDI @Named (не будет работать)
Но позаботьтесь о классах импорта области. Существуют разные классы для @SessionScoped
и @RequestScoped
в зависимости от типа bean.
javax.faces.bean.SessionScoped
для @ManagedBeans
javax.enterprise.context.SessionScoped
для CDI @Named beans