日期:2014-05-19  浏览次数:20794 次

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);
}