SSH框架中在Action中调用DAO报
空指针在使用MyEclipse10中进行了SSH(Struts2)框架的整合,使用了MyEclipse10中Hibernate自动生成DAO的方法生成了相关配置和DAO,我也在Spring配置文件中配置了相关使用的Action类,然而当我在Action中使用DAO时却报
空指针异常,但是当我使用了一个Service类来使用这个DAO却一切正常(配置文件配置正确)。求高人指点!!
------解决方案--------------------public String execute() throws Exception {
BeanFactory bf =WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
Dao dao = (Dao) bf.getBean("Daohibernate");//Daohibernate是你的Dao实现类
dao.你的方法;
}
你不想用service,你这样试一下看可以不...
------解决方案--------------------无码无真相
------解决方案--------------------好像没有注入Dao
------解决方案--------------------用的注解还是普通的调用呢?贴点代码
------解决方案--------------------代码呢..
------解决方案--------------------Aplication ap=new ClassPathXmlApplicationContext(new String[]{"youDataSource .xml","youDaoXml.xml"})
如果使用了注解:service.方法名。
如果没有使用,dao=ap.getbean("dao名称");
如果dao为空,你的xml文件可能有问题
------解决方案--------------------看看是不是服务层没有声明set方法
------解决方案--------------------//通过ClassPathXmlApplicationContext 实例化Spring的上下文
ApplicationContext context = new ClassPathXmlApplicationContex("applicationContext.xml");
//通过HelloSpring bean 的id来获取bean的实例
UserDao sd =(UserDao) context.getBean("userDao");
调用sd.方法
测试dao层方法是否没有问题
------解决方案--------------------用spring 来注入啊。干嘛要从context 里面去获取呢???
------解决方案--------------------这问题很常见,一般情况xiaonei应该上sessionFactory没有注入值,所有在产生session时调用sessionFactory的时候会报空指针。你可以试试在dao类中用注解注入sessionFactory、+
@Resource
public void setSessionFactory1(SessionFactory sessionFactory){
this.setSessionFactory(sessionFactory);
}