異常堆疊關鍵行:
java.lang.NullPointerException
at com.sanqing.action.AddVoteAction.execute(AddVoteAction.java:44)
AddVoteAction 中直接調用 voteDAO.findVoteByName(...),但 voteDAO 為 null,說明依賴注入失敗。
struts.xml) 中 Action 類未配置 class 屬性或配置錯誤。voteDAO Bean 定義缺失、ID 不匹配、作用域錯誤。ModelDriven 或缺少 setVoteDAO setter 方法。context:component-scan) 未覆蓋 DAO/Action 所在包。public String execute() {
if (voteDAO == null) {
System.err.println("voteDAO 未注入,請檢查 Spring/Struts 配置");
addActionError("系統內部錯誤:數據訪問組件不可用");
return ERROR;
}
Vote vote = voteDAO.findVoteByName(voteName);
if (vote == null) {
addActionMessage("未查詢到該投票記錄");
return INPUT;
}
int voteID = vote.getVoteID();
// 後續業務邏輯
return SUCCESS;
}
voteDAO 相關 Bean 創建信息。struts.xml 中 <action class="com.sanqing.action.AddVoteAction"> 類名正確。@Repository("voteDAO") / @Autowired 匹配。良習:所有外部依賴(DAO、Service、Util)使用前必須判空,並給出明確錯誤提示,避免 NPE 干擾業務流程。