日期:2014-05-17  浏览次数:20960 次

【求助】Servlet里面一调用Dao里的某个方法就出错!
在Action里面使用Dao中的方法就没错。
方法是同一个。

程序用的主要是Struts,因为要涉及到二级联动的问题。
而且数据都要从数据库中读出的,
所以我在Struts里用servlet来实现,
但是在servlet里,我调用Dao的方法查询数据库里的数据的时候,

public List<Discipline> findbyid(int id){
List<Discipline> list = null; 
sql = "select * from Discipline where Dis_AcademyID = "+id+""; 
try { 
list = jdbcTemplate.queryForList(sql); 
} catch (Exception e) { 
e.printStackTrace(); 
return null; 

return list; 
}

每次执行到list = jdbcTemplate.queryForList(sql);这一步就提示空指针错误。
(在Action里执行时没有出错)

真是郁闷了,琢磨了半天也没整明白到底是什么情况。
所以来到贵吧,希望各位大神帮帮忙,谢谢。


最好能加我QQ:710801527
详聊。
servlet struts 数据

------解决方案--------------------
引用:
那我要怎么解决这个问题?
我试了一个方法,就是在Action里写一个方法,用dao先查询好数据,然后放到list里面,方法的返回值就是这个list,然后我在Servlet里new一个这个Action类,然后在Servlet里调用Action的那个方法,让其返回list结果,这样还是不行。。。。。。。。

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