解决方案 »

  1.   


    jdbcTemplate不为空啊,输出过了。
      

  2.   


    jdbcTemplate不为空啊,输出过了。
    不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?
      

  3.   

     "select * from Discipline where Dis_AcademyID = '"+id+"'";"select * from Discipline";  试试看看。
      

  4.   


    jdbcTemplate不为空啊,输出过了。
    不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?jdbcTemplate一定是null。如果用的spring的话就简单,把jdbcTemplate注入进来就可以了。
      

  5.   


    jdbcTemplate不为空啊,输出过了。
    不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。
      

  6.   


    jdbcTemplate不为空啊,输出过了。
    不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。
      

  7.   


    jdbcTemplate不为空啊,输出过了。
    不为空?不能够!你的jdbcTemplate是怎么来的?spring注入吗?在Servlet里调用的时候确实为空,在Action里调用才不为空,这到底什么情况啊。如果你用的spring注入jdbcTemplate那原因很简单,因为你的servlet不是由spring管理的,所以spring就不能往servlet里注入对象,而你的action是spring管理的,所以可以注入成功。那我要怎么解决这个问题?
    我试了一个方法,就是在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行。。
      

  8.   

    在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行,错误就错在调用Dao方法的语句上,int size = disciplineDao.findbyid(id).size();。
    而在Action中调用这个方法,是没错的。
      

  9.   

    你这样做必须不行啊,行就有鬼了!你还是那个问题,你在servlet里new这个action,那么你action的对象就不再是spring管理的,而是你自己管理的,spring就不能给action注入jdbcTemplate了啊!
    你让spring帮你管理action是因为你加里一个包:struts2-spring-plugin,有这个包才能做到,那么如果你想让spring帮你管理servlet对象,也一样,加一个servlet和spring兼容的插件包,不过提前说明,这个我没试过,只是在我印象中有这么一个插件包。你搜一下看看有没有吧。
    另外,如果你想通过你刚才的方式来做的话,你可以在servlet里调用action的方法只不过调用的使用不要去new那个action,你可以从spring的applicationContext里去拿,这样spring就可以成功注入了
      

  10.   

    我用spring注入的方法,在xml中添加了这个bean。<bean id="disciplineDaoBean" class="com.dao.impl.DisciplineDao">
    <property name="msg" value="Hello World!" />
    </bean> 然后在servlet中,对disciplineDao对象进行引用。ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/*.xml"); 
    BeanFactory factory = context;
    DisciplineDao disciplineDao = (DisciplineDao)factory.getBean("disciplineDaoBean") ; 
    System.out.println(disciplineDao.getMsg());Tomcat启动过程没出问题。
    就是在触发事件,调用到这个servlet的时候,出错了。
    以下是错误信息(部分):No unique bean of type [com.dao.impl.DisciplineDao] is defined: expected single matching bean but found 2: [disciplineDao, disciplineDaoBean]
    然后我在一个普通的java类里面,测试了一下,可以输出disciplineDao中msg的数据的。
    请问这是什么原因呢,怎么解决?
    说说你们的看法吧,为这个问题我已经弄了一整天了,现在也睡不着啊。
      

  11.   

    beans.xml贴出来
    对bean的管理是 自动的?
      

  12.   

    public List<Discipline> findbyid(int id){
     List<Discipline> list = new ArrayList<Discipline>; 
     sql = "select * from Discipline where Dis_AcademyID = "+id+""; 
     try { 
     list = jdbcTemplate.queryForList(sql); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
     } 
     return list; 
     }
    打断点看看jdbcTemplate是否为空,如果为空就没注入
    看这个:!!!!
    http://blog.knowsky.com/187597.htm
      

  13.   

    给你的jdbcTemplate 初始化一下就可以了。可以在servlet获取WebApplicationContext ,然后获取bean 为你的jdbcTemplate赋值,就可以调用了。
      

  14.   

    http://blog.csdn.net/xwl617756974/article/details/7451773
    参考一下吧
      

  15.   

    spring比servlet先加载就行  spring里设置default-init-lazy=false  好像是这个属性
      

  16.   

    不对  上面的不行  不是Spring管的  你new出来的对象肯定不行
    通过applicationContext获得的才行
      

  17.   


    我刚才在servlet里面直接写JDBC了,因为操作不多,所以打算都写JDBC算数了。
    谢谢你们啊。
      

  18.   

    ApplicationContext context=new  ClassPathXmlApplicationContext("applicationContext_yisuojob.xml");
    PhotocheckService impl=(PhotocheckService) context.getBean("updatePhotocheck");今天我与遇到了一模一样的问题。在Service里面想调用接口实现类,结果一直报空指针异常。不能new 接口实现类。用以上方法我最终成功调用接口实现类。
      

  19.   

    是在Servlet里面想调用接口实现类,不是Service,笔误