zoukankan      html  css  js  c++  java
  • 关于初步搭建完成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
     

     

  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/gcjava/p/6591542.html
Copyright © 2011-2022 走看看