Проблема не в внедрении UserBean
, вы можете использовать его в других местах.
Проблема в том, что ваш подкласс ExtendingNavigation
имеет тот же классификатор, что и ваш Navigation
класс(название «навигация»).Аннотируйте ExtendingNavigation
с помощью @Named("extendedNavigation")
или что-то в этом роде, а затем укажите @Named("extendedNavigation")
рядом с @Inject
, где вы хотите его использовать.
Подумайте об этом так: вы говорите: «Дайте мнеэкземпляр класса X ", и Weld говорит:" Я не знаю, какой вы хотите ", потому что на самом деле есть два класса, которые являются навигацией.
class ValidateUserAuthenticationAction {
@Inject
@Named("extendedNavigation")
private Navigation navigation;
}
Кроме того, попробуйте использовать интерфейсы!Навигация должна быть интерфейсом.BasicNavigation должен реализовать его, и ExtendedNavigation также должен его реализовать.