繁体   English   中英

Java EE将控制器类与DAO类连接起来

[英]Java EE connect the controller class with the DAO class

我正在尝试将控制器连接到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注入到控制器中,但是我不确定自己做错了什么

尝试这个

@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
}

编辑:您不能将回购注入控制器,您应该在控制器和存储库之间放置一个层(服务)以处理数据,然后再将其发送到视图

只是一个快速的猜测...但是您是否尝试过不初始化控制器中的引用? 因为您已经有一个用@Inject注释的构造函数,所以不必自己进行初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM