關於初步搭建完成SSH環境之后,JUnit test 測試成功,頁面測試時:@Resource 注入的dao為null


這個問題研究了一天,還是因為配置的時候沒有認真,一不小心,釀成了大錯。當發現的時候感覺好尷尬啊::>_<::

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
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM