這個問題研究了一天,還是因為配置的時候沒有認真,一不小心,釀成了大錯。當發現的時候感覺好尷尬啊::>_<::
CostAction:
package com.tenni.action; import java.util.List; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.tenni.dao.ICostDao; import com.tenni.entity.Cost; @Controller @Scope("prototype") public class CostAction { @Resource private ICostDao costDao; //input private int page = 1; private int pageSize; //output private String msg; private List<Cost> list; private int totalPage; public String findAll(){ list = costDao.findAll(); return "success"; } //分頁查詢 public String load(){ list = costDao.findByPage(page, pageSize); totalPage = costDao.findTotalPage(pageSize); return "success"; } /** * @return the msg */ public String getMsg() { return msg; } /** * @param msg the msg to set */ public void setMsg(String msg) { this.msg = msg; } /** * @return the list */ public List<Cost> getList() { return list; } /** * @param list the list to set */ public void setList(List<Cost> list) { this.list = list; } public ICostDao getCostDao() { return costDao; } public void setCostDao(ICostDao costDao) { this.costDao = costDao; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } }
Struts.xml
<!-- 公共的包,封裝了通用的攔截器、通用的result --> <package name="interceptor" extends="json-default"> <interceptors> <!-- 登錄檢查攔截器 --> <interceptor name="loginInterceptor" class="com.tenni.interceptor.LoginInterceptor" /> <!-- 保持session開啟攔截器 --> <interceptor name="openSessionInterceptor" class="com.tenni.interceptor.OpenSessionInViewInterceptor" /> <!-- 登錄檢查攔截器棧 --> <interceptor-stack name="loginStack"> <interceptor-ref name="loginInterceptor" /> <interceptor-ref name="openSessionInterceptor" /> <!-- 不要丟掉默認的攔截器棧,里面有很多Struts2依賴的攔截器 --> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 設置action默認引用的攔截器 --> <default-interceptor-ref name="loginStack" /> <!-- 全局的result,包下所有的action都可以共用 --> <global-results> <!-- 跳轉到登錄頁面的result --> <result name="toLogin" type="redirectAction"> <param name="namespace">/login</param> <param name="actionName">toLogin</param> </result> <result name="error" type="redirectAction"> <param name="namespace">/error</param> <param name="actionName">error</param> </result> </global-results> </package> <!-- cost action --> <package name="cost" namespace="/cost" extends="interceptor"> <action name="findAll" class="costAction" method="findAll"> <result name="success"> /WEB-INF/main/cost.jsp </result> </action> <action name="findCost" class="costAction" method="load"> <!-- 注入頁容量 --> <param name="pageSize">3</param> <result name="success"> /WEB-INF/main/find_cost.jsp </result> </action> </package>
package----->cost extends---->interceptor(繼承了json)
由於使用Spring來管理Action,因此需要通過Spring容器來創建Action,因此class屬性指定的是組件的ID。
所以:
<action name="findAll" class="costAction"中---> costAction 不能寫成com.tenni.action.CostAction