这几天在做二次开发,以前不知道谁写的项目。据说是交大的学生.....偶就不说什么了,因为人家文凭比我高很多,还是名校。1728行的Action不见一行中文,确切的来讲,是不见一个汉字。让二次开发情何以堪???算是扯淡吧! 在开发的过程中,发现了这么一个问题。在action中调用server(注:这个项目中没有server层, 只有dao 更多的是dao木有,只有daoimpl.我不知道开发的人是什么想法)的方法,按理来说是直接进方法的。不巧的是,这次他还真的不进了。进入下面的代码
public InvocationTargetException(Throwable target) {
super((Throwable)null); // Disallow initCause
this.target = target;
}
之后控制台报NullPointerException的错误。但是debug的时候,传的参数没问题,无乱码想象。
在各种论坛上找,解决办法大多数是jar包的问题。但是同样的方法都能正常运行, 为啥单这个方法运行不了?所以果断不是jar包的问题(也有可能,只不过我的情况不是)
因为以前开发的时候都是用spring注解来做,没有想到会是spring引起的。最后发现是因为在spring中没有配置该实现类。所以dao没有注入。调用方法的时候会调用invoke()方法,这个时候dao为null,所以会报NullPointerException的错 这个错查起来有点麻烦。
解决办法就是:把该dao实现类在spring中配置下就OK了
<bean id="mapdaoImpl"
class="edu.xjtu.sei.skyeye.cernet.web.action.MapAction">
<property name="mapDAO">
<ref bean="mapDAO" />
</property>
</bean>