Java EE соединяет класс контроллера с классом DAO - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь подключить свой контроллер к классу DAO, но получаю UnsupportedOperationException.Вот мой контроллер:

@Named("contactsController")
@SessionScoped

public class ContactsController implements Serializable {
    private static final long serialVersionUID = 1L;

    protected List<Contact> contacts;

    protected ContactsDAO contactsDAO = new ContactsDAOImp();

    @Inject
    public ContactsController(ContactsDAO contactsDAO) {
    this.contactsDAO = contactsDAO;
    }

    public List<Contact> getContacts() {
        return contacts;
    }

    @PostConstruct
    public void init() {
        this.contacts = contactsDAO.getAllContacts();
    }
}

, а вот мой DAO:

@Named
@ApplicationScoped
public class ContactsDAOImp implements Serializable, ContactsDAO {
// DAO code here
}

ошибка: WELD-000049: Unable to invoke public void com.controller.ContactsController.init() on com.controller.ContactsController@7e7514ca

Кажется, что я не могу ввестиDAO referenec в контроллер, но я не уверен, что я делаю не так

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Попробуйте это

@Named("contactsController")
@SessionScoped
public class ContactsController implements Serializable {

    private static final long serialVersionUID = 1L;
    private List<Contact> contacts;

    @Inject
    private ContactsDAOImp contactsDAOImp;

    public ContactsController() { }

    public List<Contact> getContacts() {
        return contacts;
    }

    @PostConstruct
    public void init() {
        this.contacts = contactsDAO.getAllContacts();
    }
}

ContactDAO (хранилище?)

@Named
@ApplicationScoped
public class ContactsDAOImp implements Serializable, ContactsDAO {
    // DAO code here
}

edit: вы не можете внедрить репо в свой контроллер, вы должны поместить слой (сервис) междуваш контроллер и репозиторий для манипулирования вашими данными перед отправкой их в ваши представления

0 голосов
/ 28 января 2019

Просто быстрое предположение ... но вы пытались не инициализировать вашу ссылку в контроллере?Нет необходимости инициализировать его самостоятельно, поскольку у вас уже есть конструктор, помеченный @ Inject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...