• 关于初步搭建完成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
     

     

  • 相关阅读:
    dfs-入门模板
    dp-状压dp
    c++ sizeof详解
    各种排序算法
    简介
    第178场周赛总结
    单调队列
    2019.10.24刷题统计
    2019.10.23刷题统计
    2019.10.22刷题统计
  • 原文地址:https://www.cnblogs.com/gcjava/p/6591542.html
Copyright © 2020-2023  润新知