日期:2014-05-20  浏览次数:20747 次

SSH整合为什么老是抛出空指针?
工程有LoginAction、LoginServer、LoginDAO及LoginImpl实现类.
每个类各自都依照spring的配置有各自注入的Get Set方法。

applicationContext.xml:

XML code


<bean id="logindao" class="com.operator.hib.dao.impl.LoginImpl">
    <property name="sessionFactory">
        <ref bean="sessionFactory"/>
    </property>        
</bean>

<bean id="loginservice" class="com.operator.struts.service.LoginService">
    <property name="logindao">
        <ref bean="logindao"/>
    </property>        
</bean>
<bean name="/login" class="com.operator.struts.action.LoginAction">
    <property name="loginservice">
        <ref bean="loginservice"/>
    </property>
</bean>




但是在LoginAction中调用LoginServer时总会抛出以下错误:
2008-5-27 17:40:16 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.operator.struts.action.LoginAction.execute(LoginAction.java:55)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  ..................


百度了,有说没有获取到applicationContext.XML的(tomcat启动未报错),没有正确注入的(get、set方法确认无误),有缺少包的,有包版本不对的,众说纷纭,没有统一的看法,大家帮忙看看发表自己的意见啊!!

------解决方案--------------------
首先debug确认loginServer是空,是它造成的空指针!
然后确认以下:1,bean id=""配置名和action里声明的一致;
2,保证bean已经注入,比如new,或set;
3,看是不是缺少包,比如struts ,spring,plugin包!
------解决方案--------------------
LoginAction.execute(LoginAction.java:55) 
是什么哪
------解决方案--------------------
<bean name="/login" class="com.operator.struts.action.LoginAction">
<property name="loginservice">
<ref bean="loginservice"/>
</property>
</bean>

这个action为什么不直接引入logindao

loginservice是干什么的?
------解决方案--------------------
把完整的异常贴上来
------解决方案--------------------
应该是struts和spring集成的时候的问题,打下日志阿,看看spring还有struts的日志。我集成这两个框架的时候都是用<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>