在使用MyEclipse10中进行了SSH(Struts2)框架的整合,使用了MyEclipse10中Hibernate自动生成DAO的方法生成了相关配置和DAO,我也在Spring配置文件中配置了相关使用的Action类,然而当我在Action中使用DAO时却报空指针异常,但是当我使用了一个Service类来使用这个DAO却一切正常(配置文件配置正确)。求高人指点!!

解决方案 »

  1.   

    public String execute() throws Exception {
    BeanFactory bf =WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
    Dao dao = (Dao) bf.getBean("Daohibernate");//Daohibernate是你的Dao实现类
                    dao.你的方法;
    }
    你不想用service,你这样试一下看可以不...
      

  2.   

    Aplication ap=new ClassPathXmlApplicationContext(new String[]{"youDataSource .xml","youDaoXml.xml"})
    如果使用了注解:service.方法名。
    如果没有使用,dao=ap.getbean("dao名称");
    如果dao为空,你的xml文件可能有问题
      

  3.   

    看看是不是服务层没有声明set方法
      

  4.   

    //通过ClassPathXmlApplicationContext 实例化Spring的上下文
    ApplicationContext context = new ClassPathXmlApplicationContex("applicationContext.xml");
    //通过HelloSpring bean 的id来获取bean的实例
    UserDao sd =(UserDao) context.getBean("userDao");
    调用sd.方法
    测试dao层方法是否没有问题
      

  5.   

    用spring 来注入啊。干嘛要从context 里面去获取呢???
      

  6.   

    这问题很常见,一般情况xiaonei应该上sessionFactory没有注入值,所有在产生session时调用sessionFactory的时候会报空指针。你可以试试在dao类中用注解注入sessionFactory、+
    @Resource
      public void setSessionFactory1(SessionFactory sessionFactory){
         this.setSessionFactory(sessionFactory);
    }