首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

分页的时候出现的异常

2014-01-17 
求助:分页的时候出现的错误%@ page contentTypetext/html pageEncodingGBK%%@page importcn.yz

求助:分页的时候出现的错误

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@page import="cn.yz.factory.DAOFactory,cn.yz.dao.*,cn.yz.vo.*" %>
<%@page import="java.util.*" %>
<style type="text/css">
.STYLE6 {font-size: 12px}
.STYLE10 {font-size: 14px; font-weight: bold; }
table
  {
  border-collapse:collapse;
  width:100%;
  }
table,th,td
{
border:1px solid blue;
}
</style>
<script type="text/javascript">
function changeColor(obj,color){
obj.bgColor = color ;
}
</script>
<%!
public static final String URL = "product_list.jsp" ;
%>
<%
int currentPage = 1 ;// 为当前所在的页,默认在第1页
int lineSize = 3 ;// 每次显示的记录数
long allRecorders = 0 ;// 表示全部的记录数
String keyWord = request.getParameter("kw") ;// 接收查询关键字
%>
<%
try{
currentPage = Integer.parseInt(request.getParameter("cp")) ;
} catch(Exception e) {}
try{
lineSize = Integer.parseInt(request.getParameter("ls")) ;
} catch(Exception e) {}
if(keyWord == null){
keyWord = "" ;// 如果模糊查询没有关键字,则表示查询全部
}
%>
<%
IProductDAO dao = DAOFactory.getIProductDAOInstance() ;
List<Product> all = dao.findAll(keyWord,currentPage,lineSize) ;
allRecorders = dao.getAllCount(keyWord);
%>
<div align="center">
<h1>商品列表</h1><%=allRecorders%>
<jsp:include page="split_page_plugin.jsp">
<jsp:param name="allRecorders" value="<%=allRecorders%>"/>
<jsp:param name="url" value="<%=URL%>"/>
<jsp:param name="currentPage" value="<%=currentPage%>"/>
<jsp:param name="lineSize" value="<%=lineSize%>"/>
</jsp:include>
<table>
<TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')">
<td align="center" valign="middle"><span class="STYLE10">编号</span></td>
<td align="center" valign="middle"><span class="STYLE10">名称</span></td>
<td align="center" valign="middle"><span class="STYLE10">价格</span></td>
<td align="center" valign="middle"><span class="STYLE10">数量</span></td>
<td align="center" valign="middle"><span class="STYLE10">简介</span></td>
<td align="center" valign="middle"><span class="STYLE10">购买</span></td>
</TR>
<%
Iterator<Product> iter = all.iterator() ;
while(iter.hasNext()){
Product pro = iter.next() ;
%>
<TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')">
<td align="center" valign="middle"><span class="STYLE6"><%=pro.getPid()%></span></td>
<td align="center" valign="middle"><span class="STYLE6"><a href="product_show.jsp?pid=<%=pro.getPid()%>"><%=pro.getName()%></a></span></td>
<td align="center" valign="middle"><span class="STYLE6"><%=pro.getPrice()%></span></td>
<td align="center" valign="middle"><span class="STYLE6"><%=pro.getAmount()%></span></td>
<td align="center" valign="middle"><span class="STYLE6"><%=pro.getNote()%></span></td>
<td align="center" valign="middle"><span class="STYLE6"><%=pro.getCount()%></span></td>
<td align="center" valign="middle"><span class="STYLE6"><a href="add_car.jsp?pid=<%=pro.getPid()%>" target="_ablank">增加到购物车</a></span></td>
</TR>
<%
}
%>
</table>
</div>

以上是文件名为product_list.jsp的代码,下面是split_page_plugin.jsp的代码:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%
int currentPage = 1 ;// 为当前所在的页,默认在第1页
int lineSize = 3 ;// 每次显示的记录数
long allRecorders = 0 ;// 表示全部的记录数
long pageSize = 1 ;// 表示全部的页数(尾页)
int lsData[] = {1,3,5,7,9,10,15,20,25,30,50,100} ;
String keyWord = request.getParameter("kw") ;// 接收查询关键字
String url = request.getParameter("url") ;
%>
<%
try{
currentPage = Integer.parseInt(request.getParameter("currentPage")) ;
} catch(Exception e) {}
try{
lineSize = Integer.parseInt(request.getParameter("lineSize")) ;
} catch(Exception e) {}
try{
allRecorders = Long.parseLong(request.getParameter("allRecorders")) ;
} catch(Exception e) {}
if(keyWord == null){
keyWord = "" ;// 如果模糊查询没有关键字,则表示查询全部
}
%>
<%
pageSize = (allRecorders + lineSize -1) / lineSize ;


if(pageSize == 0){
pageSize = 1 ;
}
%>

<script type="text/javascript">
function go(num){
document.getElementById("cp").value = num ;
document.spform.submit() ;// 表单提交
}
</script>
<form name="spform" action="<%=url%>" method="post">
输入查询关键字:<input type="text" name="kw" value="<%=keyWord%>">
<input type="submit" value="查询"><br>
<input type="button" value="首页" onclick="go(1)" <%=currentPage==1?"DISABLED":""%>>
<input type="button" value="上一页" onclick="go(<%=currentPage-1%>)" <%=currentPage==1?"DISABLED":""%>>
<input type="button" value="下一页" onclick="go(<%=currentPage+1%>)" <%=currentPage==pageSize?"DISABLED":""%>>
<input type="button" value="尾页" onclick="go(<%=pageSize%>)" <%=currentPage==pageSize?"DISABLED":""%>>
跳转到第<select name="selcp" onchange="go(this.value)">
<%
for(int x=1;x<=pageSize;x++){
%>
<option value="<%=x%>" <%=x==currentPage?"SELECTED":""%>><%=x%></option>
<%
}
%>
</select>页
每页显示
<select name="ls" onchange="go(1)">
<%
for(int x=0;x<lsData.length;x++){
%>
<option value="<%=lsData[x]%>" <%=lsData[x]==lineSize?"SELECTED":""%>><%=lsData[x]%></option>
<%
}
%>
</select>

<input type="hidden" name="cp" value="1">
</form>


结果如图分页的时候出现的异常
在跳转到第几页那里永远只有1,下拉列表里没有更多,我在商品列表下面测试了allRecorders的值,为0,我想会不会是DAOImpl里面有错误,我单独测试了那个文件,没有问题,可以得到总的记录个数,DAOImpl代码如下:
public long getAllCount(String keyWord) throws Exception {
long count = 0;
String sql = "select count(pid) from product where name LIKE ? OR note LIKE ? OR price LIKE ? OR amount LIKE ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%"+keyWord+"%");
pstmt.setString(2, "%"+keyWord+"%");
pstmt.setString(3, "%"+keyWord+"%");
pstmt.setString(4, "%"+keyWord+"%");
ResultSet rs = pstmt.executeQuery();
if (rs.next()) { // 取得全部的记录数
count = rs.getInt(1);
}
return count;
}

实在是不知道哪里出错了,allRecorders总是0,所以总页数一直是1,完成不了分页功能!求指导~
[解决办法]
在后台到前台的时候debug一下那个allrecords
[解决办法]
没仔细看你的代码,jsp混淆这大量小脚本 天呐~ 是不是你的小脚本的原因的 还是传递allrecords的时候有问题?
建议:
1 建议可以使用jstl等标签库取代你现在的小脚本,
2 分页的处理 这样写太麻烦,java 的 对象思想呢~

[解决办法]
deubg 看看 那一步的问题

热点排行