hibernate和struts前辈老帮我解决下问题。

awt_boy 2008-04-01 08:45:51
在显示页面里的“删除”这个超链接是根据页面传进来的ID去删除数据库对应的数据的
错误如下:
javax.servlet.ServletException: java.lang.IllegalArgumentException: id to load is required for loading
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
bug.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:89)


root cause

java.lang.IllegalArgumentException: id to load is required for loading
org.hibernate.event.LoadEvent. <init>(LoadEvent.java:51)
org.hibernate.event.LoadEvent. <init>(LoadEvent.java:33)
org.hibernate.impl.SessionImpl.load(SessionImpl.java:778)
org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
bug.dao.imp.BugDAOImp.deleteBugByID(BugDAOImp.java:39)
bug.web.struts.action.DeleteBug.execute(DeleteBug.java:50)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
bug.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter

据说这个是表单里面没有把参数传过来的错误
我是在一个显示页面里指向一个请求处理的,然后请求处理取得数据库的内容并返回显示页面,处理的部分程序如下:
public void listpage(HttpServletRequest request, JspWriter out, int page)
throws Exception {

String id = "", sta = "", pha = "", cat = "";
bugDao = this.getBugDAO();
List list = bugDao.getBug();
if (list == null) {
out.print("暂无信息");
return;

}
int total = list.size();
int count = 0;
//取得list迭代器
Iterator it = list.iterator();
Bug bug;

while (count < (page - 1) * 10 && it.hasNext()) {
it.next();
count++;
}

count = 0;

while (it.hasNext() && count < 10) {
bug = (Bug) it.next();

id = bug.getId();
sta = bug.getSta();
pha = bug.getPha();
cat = bug.getCat();
if (sta == null || sta.equals(""))
sta = "无";
if (pha == null || pha.equals(""))
pha = "无";
if (cat == null || cat.equals(""))
cat = "无";

out.print("<tr><td><a href=list.do?id=" + id + ">"+id+"</a></td><td>" + sta + "</td><td>"
+ pha + "</td><td>" + cat + "</td><td>");
out.print("<a href=DeleteBug.do?id="
+ bug.getId() + ">删除</a></td><td>");
count++;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DAO的删除方法如下
public boolean deleteBugByID(String id) {
try {
Session s = HibernateUtil.currentSession();
//HibernateUtil.beginTransaction();
Bug bug=new Bug();
bug= (Bug) s.load(Bug.class, bug.getId());
HibernateUtil.commitTransaction();

System.out.println(bug.getId());
HibernateUtil.beginTransaction();
s.delete(bug);
HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
return true;
} catch (HibernateException e) {
log.fatal(e);
}
return false;
}


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Action如下:
public class DeleteBug extends Action {


private BugDAO bugDao;

public BugDAO getBugDAO() {
return DAOFactory.getInstance().createBugDAO();
}

/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

// ActionMessages errors = new ActionMessages();

String id =request.getParameter("id");

bugDao = this.getBugDAO();

if(!bugDao.deleteBugByID(id)){
return (mapping.getInputForward());
}

return (mapping.findForward("deleteBugSuccess"));
}

}
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjianailn 2008-04-02
  • 打赏
  • 举报
回复
问题不是你的参数传递有问题吗?
你贴的上面2段基本没意义,你把String id =request.getParameter("id");
打出来看看是什么值,是不是为空?
你用struts,没用actionform吗?
这个ID是不是hidden传过来的?
说的太不清楚了。。。
xlongbuilder 2008-04-02
  • 打赏
  • 举报
回复
到底传过来么
你打印出来看看啊

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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