jsp出现java.lang.NullPointerException 异常

cmxhuman 2010-06-06 10:45:29
public ActionForward doSelectteacher(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Map map = new HashMap();
try {
int teacherId = Integer.parseInt(request.getParameter("id"));//这里id可以取到
System.out.print("teacherId="+teacherId);
String sql="from Teacher where teacherId = "+teacherId+"";
System.out.println(sql);
List<Teacher> teachers = teacherDAO.findByHQL(sql);单步调试只能到这里,再往下就直接报异常java.lang.NullPointerException
Teacher teacher = teachers.get(0);
if(teacher != null) {
int courseId = teacher.getCourseId();
DetachedCriteria dc = org.hibernate.criterion.DetachedCriteria.forClass(Teacher.class);
dc.createAlias("coursse", "cou");
dc.add(Restrictions.eq("cou.courseId", courseId));
Page.util( request, achievementService,dc,"dataList","param=doSelect",map,Page.PAGESIZE);//分页
}
return mapping.findForward("show");
} catch (Exception e) {
request.setAttribute("exceptions",e);
return mapping.findForward("exceptions");
}
}

hibernate配置都是正常的,可以正常连接,有teacher和course表,teacher通过courseId和course关联,DEBUG调试可以运行到以上红色,再往下就直接捕获异常显示了
...全文
213 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2010-06-07
  • 打赏
  • 举报
回复
肯定是什么值没有得到
rainsilence 2010-06-07
  • 打赏
  • 举报
回复
断点打在this.teacherDAO = teacherDAO;这句上
看看有没有进来
kuailexiaobuding4 2010-06-07
  • 打赏
  • 举报
回复
哈哈看看的daoimpl方法测试写个main方法测试下。
wymaweiyue 2010-06-07
  • 打赏
  • 举报
回复
可能是Spring注入的时候配置文件中那里写错了,说不定就是大小写的问题,仔细看看。
Joy 2010-06-07
  • 打赏
  • 举报
回复
teacherDAO 加个静态修饰符
Java技术栈 2010-06-07
  • 打赏
  • 举报
回复
teacherDAO这个接口没有在spring中注入 或是没有set方法 LZ试试看吧
muler1988 2010-06-07
  • 打赏
  • 举报
回复
Sorry 我看错了
muler1988 2010-06-07
  • 打赏
  • 举报
回复
恩?? 我晕 那个findByHQL明明是传了3个三个参数吗
bossdai 2010-06-07
  • 打赏
  • 举报
回复
应该是你的dao注入失败了 要么就是你的查询sql数据库连接错误
dbx915 2010-06-07
  • 打赏
  • 举报
回复
teacherDAO为空,应该是配置文件的问题吧,检查一下在Spring注入时是不是不对,是不是名字写的不对应
cmxhuman 2010-06-07
  • 打赏
  • 举报
回复
package com.dao;

import com.po.Teacher;

/**
* TeacherDAO
* @author JSmart Tools
*/
public class TeacherDAO extends GenericHibernateDAO<Teacher, Integer> implements ITeacherDAO {

}


package com.dao;

import com.po.Teacher;

/**
* TeacherDAO
* @author JSmart Tools
*/
public interface ITeacherDAO extends GenericDAO<Teacher,Integer> {

}


package com.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.criterion.DetachedCriteria;

/**
* @author JSmart Tools
*/
public interface GenericDAO<T extends Serializable, PK extends Serializable> {
......
public abstract List findByHQL(String queryString);
......
}


package com.dao;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
* GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,
* 简化基于Hibernate Dao 的编写。
* @author JSmart Tools
*/
@SuppressWarnings("unchecked")
public class GenericHibernateDAO<T extends Serializable, PK extends Serializable> extends HibernateDaoSupport implements GenericDAO<T, PK>
{
// 实体类类型(由构造方法自动赋值)
private Class<T> entityClass;

// 构造方法,根据实例类自动获取实体类类型
public GenericHibernateDAO() {
this.entityClass = null;
Class c = getClass();
Type t = c.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] p = ((ParameterizedType) t).getActualTypeArguments();
this.entityClass = (Class<T>) p[0];
}
}
.......

public List<T> findByHQL(final int currPage, final int pagesize,
final String hql) {
List list = this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
List result = session.createQuery(hql).setFirstResult(
currPage > 1 ? (currPage - 1) * pagesize : 0)
.setMaxResults(pagesize).list();
return result;
}
});
return list;
}
.....
}



cmxhuman 2010-06-07
  • 打赏
  • 举报
回复
果然是teacherDAO没有注入,问题解决了,这个注入的我当时忘了,各位谢谢了
Mybeautiful 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cmxhuman 的回复:]
设置了。。

public class AchievementAction extends DispatchAction {

private ITeacherDAO teacherDAO;

public void setTeacherDAO(ITeacherDAO teacherDAO) {
this.teacherDAO = teacherDAO;
..... }
[/Quote]

在这个set方法设断点,我可以确定程序不会进这里。 spring没有正确的注入。
gulang76 2010-06-06
  • 打赏
  • 举报
回复
teacherDAO的代码也贴出来看看
cmxhuman 2010-06-06
  • 打赏
  • 举报
回复
设置了。。

public class AchievementAction extends DispatchAction {

private ITeacherDAO teacherDAO;

public void setTeacherDAO(ITeacherDAO teacherDAO) {
this.teacherDAO = teacherDAO;
..... }
qiheia 2010-06-06
  • 打赏
  • 举报
回复
确定下teacherDAO这个对象是否为空
海会圣贤 2010-06-06
  • 打赏
  • 举报
回复
teacherDAO为空啊,你没有set进去吧。

看看你的配置文件吧。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧