[問題] 使用CDI注入物件到屬性

作者: lueichun (no anonymous)   2021-01-02 23:04:45
※狀況概述:
我嘗試用CDI,將DAO物件注入到位於某個Action的DAO屬性裡,不過都失敗,看起來是
注入沒有成功。
※程式碼:
DAO:
@Named
@ApplicationScoped
public class TestDao {
......
}
Action:
@ManagedBean(name="testAction")
@SessionScoped
public class TestAction {
@Inject
TestDao testDao;
public List<Customer> query(){
customerList = testDao.query();//執行到這行出錯
}
※錯誤訊息:
com.sun.faces.lifecycle.InvokeApplicationPhase execute
警告: #{testAction.query()}: java.lang.NullPointerException
javax.faces.FacesException: #{testAction.query()}:
java.lang.NullPointerException
threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
※補充說明:
看起來是注入沒有成功才會跳NullPointerException,
DAO有用@Named跟@ApplicationScoped來註冊物件跟指定存在的scope
action也有用@inject宣告要注入的屬性
那請問要如何修改才能修正呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com