背景如题。
出错信息:每次访问mygive.jsp时,都会提示错误:com.kevin.dao.util.PageList.getListForPage(PageList.java:31)
除此之外,没有任何其他信息。代码如下:
1.mygive.jsp:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ taglib prefix="s" uri="/struts-tags" %><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>商品</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="<%=basePath%>css/css.css"/>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jQuery-1.8.3.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/setImg.js"></script>
<script type="text/javascript">
function setGiveDttmDiv(dttmValue,divTag)
{
divTag.html("dttmValue");
}
function conformDel()
{
if(confirm("您确定要删除该记录吗?"))
{
event.returnValue=true;
}
else
{
event.returnValue=false;
}
}
</script> </head>
<body>
<%@ include file="../../header.jsp" %>
<table width="980px" align="center">
<tr>
<td width="200px" valign="top">
<%@ include file="inc/userleft.jsp" %>
</td>
<td width="780px" valign="top">
<table border="0px">
<tr>
<td height="25px"><a href="con_mygive">商品</a></td>
</tr>
</table>
<!--列表-->
<table border="1px">
<tr>
<td width="400px" align="center">物品</td>
<td width="100px" align="center">发布时间</td>
<td width="80px" align="center">状态</td>
<td width="80px" align="center">点击</td>
<td width="120px" align="center">操作</td>
</tr>
<s:iterator value="gives">
<tr height="100px">
<td>
<table>
<tr>
<td width="150px">
<s:hidden value="id"></s:hidden>
<s:if test="pictures.size==0">
<img src="upload/nothavepic_sl.jpg" onload="javascript:ResizePic(this,100,100)" />
</s:if>
<s:else>
<s:iterator value="pictures" id="pic">
<s:if test="#pic.mainFlag==1">
<img src="${pic.slurl}" onload="javascript:ResizePic(this,100,100)" />
</s:if>
</s:iterator>
</s:else>
</td>
<td width="250px">
<table>
<tr>
<td width="250px" style="word-wrap: break-word;word-break:break-all;"><s:property value="itemName"></s:property></td>
</tr>
<tr>
<td>
<s:if test="itemOldcls==10">全新</s:if>
<s:elseif test="itemOldcls==9">9成新</s:elseif>
<s:elseif test="itemOldcls==8">8成新</s:elseif>
<s:elseif test="itemOldcls==7">7成新</s:elseif>
<s:elseif test="itemOldcls==6">6成新</s:elseif>
<s:elseif test="itemOldcls==5">5成新</s:elseif>
<s:elseif test="itemOldcls==4">4成新</s:elseif>
<s:elseif test="itemOldcls==3">3成新</s:elseif>
<s:elseif test="itemOldcls==2">2成新</s:elseif>
<s:else>1成新</s:else>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td>
<s:property value="giveDttm"></s:property>
</td>
<td>
<s:if test="giveStatus==2">
<s:property value="giveCustomer.username"/>
</s:if>
<s:elseif test="giveStatus==12">
<s:property value="itemSuoquTimes"/>人购买
</s:elseif>
<s:elseif test="giveStatus==3">
卖给<s:property value="giveCustomer.username"/>,物品已发出
</s:elseif>
<s:elseif test="giveStatus==4">
卖给<s:property value="giveCustomer.username"/>,物品已收到
</s:elseif>
<s:else>还无人购买</s:else>
</td>
<td><s:property value="itemClickTimes"></s:property>次</td>
<td>
<s:if test="giveStatus==11">
<a href="editGive?giveid=${id}">编辑</a>
<br>
</s:if>
<s:if test="giveStatus==11 || giveStatus==12">
<a href="deleteGivePro?giveid=${id}" onclick="conformDel()">删除</a>
<br>
</s:if>
</td>
</tr>
</s:iterator>
</table>
</td>
</tr>
</table>
</body>
</html>2.Struts.xml相关代码:<action name="con_mygive" class="com.kevin.action.ViewMyGiveAction" method="viewMyGiving">
<result name="success">/WEB-INF/content/mygive.jsp</result>
<interceptor-ref name="defaultAuthority"></interceptor-ref>
</action>
3.ViewMyGiveAction.java:package com.kevin.action;import java.util.List;import com.kevin.domain.Give;
import com.kevin.service.GiveService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class ViewMyGiveAction extends ActionSupport
{
private GiveService giveService;
private List<Give> gives; public List<Give> getGives()
{
return gives;
} public void setGives(List<Give> gives)
{
this.gives = gives;
} public void setGiveService(GiveService giveService)
{
this.giveService = giveService;
}
public String viewMyGiving()
{
ActionContext ctx = ActionContext.getContext();
//此处直接取前3条记录,用于测试
this.gives = giveService.getGivingByUsername((String)ctx.getSession().get("username"),1,0,3);
System.out.println(this.gives.size());
if(this.gives.get(0).getPictures()==null)
{
System.out.println("Picture is null");
}
else
{
System.out.println(this.gives.get(0).getPictures().size());
}
System.out.println(this.gives.size());
return SUCCESS;
}
}
4.GiveService.java:package com.kevin.service;import java.util.List;import com.kevin.domain.Give;
import com.kevin.domain.Picture;public interface GiveService
{ boolean saveGivePictures(List<Picture> pictures); Long addGive(Give give); //获取某用户所有出售
List<Give> getGivingByUsername(String username);
//获取某用户特定类别的出售:
//0:所有;
//1:出售中;
//2:出售成功;
//3:审核中;
//4:审核失败;
//5:已删除
List<Give> getGivingByUsername(String username, int giveType, int offset, int length); void deleteGiveById(Long giveid);
}
5.GiveDao.java:package com.kevin.dao;import com.kevin.domain.*;import java.util.List;public interface GiveDao
{
/**
* 加载Give实例
* @param id 需要加载的Give实例的主键值
* @return 返回加载的Give实例
*/
Give get(Long id);
/**
* 保存Give实例
* @param Give 需要保存的Give实例
* @return 刚刚保存的Give实例的标识属性值
*/
Long save(Give give);
/**
* 修改Give实例
* @param give 需要修改的Give实例
*/
void update(Give give);
/**
* 删除Give实例
* @param id 需要删除的Give实例的标识属性值
*/
void delete(Long id);
/**
* 删除Give实例
* @param give 需要删除的Give实例
*/
void delete(Give give);
/**
* 根据用户名查找Give
* @param name 查询的人名
* @return 指定用户名对应的全部Give
*/
List<Give> findByName(String name);
/**
* 查询全部Give实例
* @return 全部Give实例
*/
public List<Give> findAllGive(); List<Give> findGivingByUsername(String username); void deleteGiveById(Long giveid); List<Give> findGivingByUsername(String username, int giveType, int offset, int length);
}6.GiveDaoHibernate.java:package com.kevin.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.kevin.dao.GiveDao;
import com.kevin.domain.Give;
import com.kevin.dao.util.*;public class GiveDaoHibernate extends HibernateDaoSupport implements GiveDao
{ @Override
public Give get(Long id)
{
return getHibernateTemplate().get(Give.class, id);
} @Override
public Long save(Give give)
{
return (Long)getHibernateTemplate().save(give);
} @Override
public void update(Give give)
{
getHibernateTemplate().update(give); } @Override
public void delete(Long id)
{
getHibernateTemplate().delete(get(id)); } @Override
public void delete(Give give)
{
getHibernateTemplate().delete(give); } @Override
public List<Give> findByName(String name)
{
return (List<Give>)getHibernateTemplate().find("from Give g where g.itemName like ?",name);
} @Override
public List<Give> findAllGive()
{
return (List<Give>)getHibernateTemplate().find("from Give");
} @Override
public List<Give> findGivingByUsername(String username)
{
return (List<Give>)getHibernateTemplate().find("from Give g where g.customer.username=? order by giveDttm desc",username);
}
@Override
public List<Give> findGivingByUsername(String username,int giveType,int offset,int length)
{
String hql = "from Give"; //测试使用,简化了写法
PageList pageList = new PageList();
return (List<Give>)pageList.getListForPage(hql, offset, length);
} @Override
public void deleteGiveById(Long giveid)
{
String hql="UPDATE Give g SET g.giveStatus=-31 where g.id="+String.valueOf(giveid);
getHibernateTemplate().bulkUpdate(hql);
}}
出错信息:每次访问mygive.jsp时,都会提示错误:com.kevin.dao.util.PageList.getListForPage(PageList.java:31)
除此之外,没有任何其他信息。代码如下:
1.mygive.jsp:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ taglib prefix="s" uri="/struts-tags" %><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>商品</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="<%=basePath%>css/css.css"/>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jQuery-1.8.3.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/setImg.js"></script>
<script type="text/javascript">
function setGiveDttmDiv(dttmValue,divTag)
{
divTag.html("dttmValue");
}
function conformDel()
{
if(confirm("您确定要删除该记录吗?"))
{
event.returnValue=true;
}
else
{
event.returnValue=false;
}
}
</script> </head>
<body>
<%@ include file="../../header.jsp" %>
<table width="980px" align="center">
<tr>
<td width="200px" valign="top">
<%@ include file="inc/userleft.jsp" %>
</td>
<td width="780px" valign="top">
<table border="0px">
<tr>
<td height="25px"><a href="con_mygive">商品</a></td>
</tr>
</table>
<!--列表-->
<table border="1px">
<tr>
<td width="400px" align="center">物品</td>
<td width="100px" align="center">发布时间</td>
<td width="80px" align="center">状态</td>
<td width="80px" align="center">点击</td>
<td width="120px" align="center">操作</td>
</tr>
<s:iterator value="gives">
<tr height="100px">
<td>
<table>
<tr>
<td width="150px">
<s:hidden value="id"></s:hidden>
<s:if test="pictures.size==0">
<img src="upload/nothavepic_sl.jpg" onload="javascript:ResizePic(this,100,100)" />
</s:if>
<s:else>
<s:iterator value="pictures" id="pic">
<s:if test="#pic.mainFlag==1">
<img src="${pic.slurl}" onload="javascript:ResizePic(this,100,100)" />
</s:if>
</s:iterator>
</s:else>
</td>
<td width="250px">
<table>
<tr>
<td width="250px" style="word-wrap: break-word;word-break:break-all;"><s:property value="itemName"></s:property></td>
</tr>
<tr>
<td>
<s:if test="itemOldcls==10">全新</s:if>
<s:elseif test="itemOldcls==9">9成新</s:elseif>
<s:elseif test="itemOldcls==8">8成新</s:elseif>
<s:elseif test="itemOldcls==7">7成新</s:elseif>
<s:elseif test="itemOldcls==6">6成新</s:elseif>
<s:elseif test="itemOldcls==5">5成新</s:elseif>
<s:elseif test="itemOldcls==4">4成新</s:elseif>
<s:elseif test="itemOldcls==3">3成新</s:elseif>
<s:elseif test="itemOldcls==2">2成新</s:elseif>
<s:else>1成新</s:else>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td>
<s:property value="giveDttm"></s:property>
</td>
<td>
<s:if test="giveStatus==2">
<s:property value="giveCustomer.username"/>
</s:if>
<s:elseif test="giveStatus==12">
<s:property value="itemSuoquTimes"/>人购买
</s:elseif>
<s:elseif test="giveStatus==3">
卖给<s:property value="giveCustomer.username"/>,物品已发出
</s:elseif>
<s:elseif test="giveStatus==4">
卖给<s:property value="giveCustomer.username"/>,物品已收到
</s:elseif>
<s:else>还无人购买</s:else>
</td>
<td><s:property value="itemClickTimes"></s:property>次</td>
<td>
<s:if test="giveStatus==11">
<a href="editGive?giveid=${id}">编辑</a>
<br>
</s:if>
<s:if test="giveStatus==11 || giveStatus==12">
<a href="deleteGivePro?giveid=${id}" onclick="conformDel()">删除</a>
<br>
</s:if>
</td>
</tr>
</s:iterator>
</table>
</td>
</tr>
</table>
</body>
</html>2.Struts.xml相关代码:<action name="con_mygive" class="com.kevin.action.ViewMyGiveAction" method="viewMyGiving">
<result name="success">/WEB-INF/content/mygive.jsp</result>
<interceptor-ref name="defaultAuthority"></interceptor-ref>
</action>
3.ViewMyGiveAction.java:package com.kevin.action;import java.util.List;import com.kevin.domain.Give;
import com.kevin.service.GiveService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class ViewMyGiveAction extends ActionSupport
{
private GiveService giveService;
private List<Give> gives; public List<Give> getGives()
{
return gives;
} public void setGives(List<Give> gives)
{
this.gives = gives;
} public void setGiveService(GiveService giveService)
{
this.giveService = giveService;
}
public String viewMyGiving()
{
ActionContext ctx = ActionContext.getContext();
//此处直接取前3条记录,用于测试
this.gives = giveService.getGivingByUsername((String)ctx.getSession().get("username"),1,0,3);
System.out.println(this.gives.size());
if(this.gives.get(0).getPictures()==null)
{
System.out.println("Picture is null");
}
else
{
System.out.println(this.gives.get(0).getPictures().size());
}
System.out.println(this.gives.size());
return SUCCESS;
}
}
4.GiveService.java:package com.kevin.service;import java.util.List;import com.kevin.domain.Give;
import com.kevin.domain.Picture;public interface GiveService
{ boolean saveGivePictures(List<Picture> pictures); Long addGive(Give give); //获取某用户所有出售
List<Give> getGivingByUsername(String username);
//获取某用户特定类别的出售:
//0:所有;
//1:出售中;
//2:出售成功;
//3:审核中;
//4:审核失败;
//5:已删除
List<Give> getGivingByUsername(String username, int giveType, int offset, int length); void deleteGiveById(Long giveid);
}
5.GiveDao.java:package com.kevin.dao;import com.kevin.domain.*;import java.util.List;public interface GiveDao
{
/**
* 加载Give实例
* @param id 需要加载的Give实例的主键值
* @return 返回加载的Give实例
*/
Give get(Long id);
/**
* 保存Give实例
* @param Give 需要保存的Give实例
* @return 刚刚保存的Give实例的标识属性值
*/
Long save(Give give);
/**
* 修改Give实例
* @param give 需要修改的Give实例
*/
void update(Give give);
/**
* 删除Give实例
* @param id 需要删除的Give实例的标识属性值
*/
void delete(Long id);
/**
* 删除Give实例
* @param give 需要删除的Give实例
*/
void delete(Give give);
/**
* 根据用户名查找Give
* @param name 查询的人名
* @return 指定用户名对应的全部Give
*/
List<Give> findByName(String name);
/**
* 查询全部Give实例
* @return 全部Give实例
*/
public List<Give> findAllGive(); List<Give> findGivingByUsername(String username); void deleteGiveById(Long giveid); List<Give> findGivingByUsername(String username, int giveType, int offset, int length);
}6.GiveDaoHibernate.java:package com.kevin.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.kevin.dao.GiveDao;
import com.kevin.domain.Give;
import com.kevin.dao.util.*;public class GiveDaoHibernate extends HibernateDaoSupport implements GiveDao
{ @Override
public Give get(Long id)
{
return getHibernateTemplate().get(Give.class, id);
} @Override
public Long save(Give give)
{
return (Long)getHibernateTemplate().save(give);
} @Override
public void update(Give give)
{
getHibernateTemplate().update(give); } @Override
public void delete(Long id)
{
getHibernateTemplate().delete(get(id)); } @Override
public void delete(Give give)
{
getHibernateTemplate().delete(give); } @Override
public List<Give> findByName(String name)
{
return (List<Give>)getHibernateTemplate().find("from Give g where g.itemName like ?",name);
} @Override
public List<Give> findAllGive()
{
return (List<Give>)getHibernateTemplate().find("from Give");
} @Override
public List<Give> findGivingByUsername(String username)
{
return (List<Give>)getHibernateTemplate().find("from Give g where g.customer.username=? order by giveDttm desc",username);
}
@Override
public List<Give> findGivingByUsername(String username,int giveType,int offset,int length)
{
String hql = "from Give"; //测试使用,简化了写法
PageList pageList = new PageList();
return (List<Give>)pageList.getListForPage(hql, offset, length);
} @Override
public void deleteGiveById(Long giveid)
{
String hql="UPDATE Give g SET g.giveStatus=-31 where g.id="+String.valueOf(giveid);
getHibernateTemplate().bulkUpdate(hql);
}}
解决方案 »
- database explorer建立新连接,但弹出Connction parameters 界面各选项值都为空,怎么回事?帮帮忙,谢谢!
- Hibernate第三方连接池C3P0中文处理问题!!!在线!
- 初学者问个问题
- hibernate 查询同一天不同时间段的记录
- 【求助】IIS6 500 error原因
- 在调用完request.getParameter后(request.getInputStream失效,返回为空),如何得到raw data!多多感谢!
- 求:《Enterpise java with UML》 电子书或online book(第二版)
- 学习J2EE所需要的软件是什么?
- ejb测试问题,不知乍办????在线等待-----
- 新创建的实体类,查询所有测试时,不发sql
- java.util.ArrayList cannot be cast to java.lang.Integer
- 该用啥设计模式?
7.上面引用到的PageList.java:package com.kevin.dao.util;import java.sql.SQLException;
import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class PageList extends HibernateDaoSupport
{
public PageList()
{
super();
// TODO Auto-generated constructor stub
} /**
* 使用hql 语句进行操作
* @param hql:要执行的语句
* @param offset
* @param length
* @return List
*/ public List getListForPage(final String hql, final int offset,final int length)
{
List list = getHibernateTemplate().executeFind
(
new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException, SQLException
{
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
}
);
return list;
}
}
当不使用分页时,也就是根本不调用PageList里的分页方法,而是直接查询所有记录,mygive.jsp运行正常,没有任何错误。当使用Hibernate分页时,就报错:com.kevin.dao.util.PageList.getListForPage(PageList.java:31)。
其中的PageList.java:31是指
List list = getHibernateTemplate().executeFind
这行。到底是怎么回事呢?高手帮忙看一下吧。多谢。
没有别的了,控制台里也没有任何异常信息