大家好,我是一个菜鸟.
我在做ssh添加一张表的记录的时候
在action中报出了空指针异常, 但是可以进的去action.
小弟拙见,可能是因为调不到service类里面的方法,但是我反复检查了application里面所注入的配置已经都配好了,就是调不到service里面的方法. 在这里想向各位大哥可以提点1,2.让我找出这个错误..谢谢.

解决方案 »

  1.   

    那你在程序里面判断service的引用是否为null
      

  2.   

    堆栈信息怎么看都没学会,ssh就上了,这不对啊。楼主先贴代码。
      

  3.   

    代码补上:action中:public class OrderAction extends Action {

    private IOrderService orderService;public void setOrderService(IOrderService orderService) {
    this.orderService = orderService;
    }
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
    OrderForm orderForm = (OrderForm) form;// TODO Auto-generated method stub
    OrderVo vo = orderForm.getVo();

    String ordertime = orderForm.getOrdertime();
    SimpleDateFormat d= new SimpleDateFormat("yyyy/MM/dd");
    vo.setOrderTime(d.parse(ordertime.replace('-','/')));
    System.out.println(ordertime);
    System.out.println(vo.getOrderTime());
    System.out.println(vo.getOrderAddress());
    orderService.OrderAdd(vo);  //运行到这句话时报空
    return null;
    }
    }application 配置文件:<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean>
    <!-- Dao -->
    <bean id="OrderlistDAO" class="com.dao.OrderlistDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>

    <!-- service -->
    <bean id="OrderService" class="com.service.OrderService">
    <property name="orderlistDAO" ref="OrderlistDAO"></property>
    </bean>

    <!-- Action -->
    <bean name="/order" class="com.struts.action.OrderAction">
    <property name="orderService" ref="OrderService"></property>
    </bean>

    <bean id="htm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <tx:advice id="ad" transaction-manager="htm">
    <tx:attributes>
    <tx:method name="*"/>
    </tx:attributes>
    </tx:advice>

    <aop:config>
    <aop:advisor advice-ref="ad" pointcut="execution(public * com.service.*Service.*(..))"/>
    </aop:config>
    </beans>
    service类::
    public class OrderService implements IOrderService { private OrderlistDAO orderlistDAO;
    public void setOrderlistDAO(OrderlistDAO orderlistDAO) {
    this.orderlistDAO = orderlistDAO;
    }

    /* (non-Javadoc)
     * @see com.service.IOrderService#OrderAdd(com.vo.OrderVo)
     */
    public void OrderAdd(OrderVo vo)
    {
    System.out.println("大家好");
    Orderlist orderlist = VoPoConvert.copyProperties(vo,Orderlist.class);
    orderlistDAO.save(orderlist);
    }
    }
      

  4.   

    没看出来哪有明显的问题,你用debug调试一下。
      

  5.   

    我的天啊  人才!!!  在action中的属性是orderService   然后再注入的时候
    <bean id="OrderService"---------------orderService   明显不匹配 class="com.service.OrderService">
    <property name="orderlistDAO" ref="OrderlistDAO"></property>
    </bean>
      

  6.   


    这是一个问题。
    再弱弱的问一句,我咋没找到 是不是在配置里面action中加了service的引用,就可以不用getBean方法去获取service的bean对象了
      

  7.   


    这个只是注入service..但是action的引用确实引用的是service的id啊
    <bean name="/order" class="com.struts.action.OrderAction">
    <property name="orderService" ref="OrderService"></property>
    </bean>
      

  8.   

    错误信息:
    javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.lang.NullPointerException
    com.struts.action.OrderAction.execute(OrderAction.java:49)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    菜鸟求教..
      

  9.   

    我估计不是你的注入出现问题,而是你的service里面出现了异常,比如你的dao类这些……也有可能在action中报错……你试试System.out.println(orderService==null)的返回看看是不是你的注入出现问题,如果不为空就试试service方法里面的内容……