hibernate分页时可以显示第一页但是当点下一页时,出现数组下标越界错误,估计是没有取到数据给list所致 具体原因不知道。<%
String hql="from Cpmessage";
int totalRows=hn.query(hql).size();
int index=0;
int amount=9;
String firstID=request.getParameter("firstID");
String lastID=request.getParameter("lastID");
if(firstID!=null){
int id=Integer.parseInt(firstID);
index=id-amount-1;
if(index<0){
index=0;
}
}
if(lastID!=null){
int id=Integer.parseInt(lastID);
index=id;
if(index>totalRows){
index=totalRows;
}
}
List pageGoods=hn.query(hql,index,amount);
Cpmessage firstGoods=(Cpmessage)pageGoods.get(0);
int last=amount-1;
if(last>pageGoods.size()){
last=pageGoods.size()-1;
}
Cpmessage lastGoods=(Cpmessage)pageGoods.get(last);
for(int i=0;i<pageGoods.size();i++){
Cpmessage cp=(Cpmessage)pageGoods.get(i);
%> 共<%out.print(totalRows);%>条数据
<%if(index>0){ %> <a href="prcenter.jsp?firstID=<%out.print(firstGoods.getId()); %>">上一页</a><%} %>
<%if(index+amount<totalRows){ %> <a href="prcenter.jsp?lastID=<%out.print(lastGoods.getId()); %>">下一页</a><%} %>
错误信息
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at org.apache.jsp.basic.prcenter_jsp._jspService(prcenter_jsp.java:193) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Thread.java:619)
String hql="from Cpmessage";
int totalRows=hn.query(hql).size();
int index=0;
int amount=9;
String firstID=request.getParameter("firstID");
String lastID=request.getParameter("lastID");
if(firstID!=null){
int id=Integer.parseInt(firstID);
index=id-amount-1;
if(index<0){
index=0;
}
}
if(lastID!=null){
int id=Integer.parseInt(lastID);
index=id;
if(index>totalRows){
index=totalRows;
}
}
List pageGoods=hn.query(hql,index,amount);
Cpmessage firstGoods=(Cpmessage)pageGoods.get(0);
int last=amount-1;
if(last>pageGoods.size()){
last=pageGoods.size()-1;
}
Cpmessage lastGoods=(Cpmessage)pageGoods.get(last);
for(int i=0;i<pageGoods.size();i++){
Cpmessage cp=(Cpmessage)pageGoods.get(i);
%> 共<%out.print(totalRows);%>条数据
<%if(index>0){ %> <a href="prcenter.jsp?firstID=<%out.print(firstGoods.getId()); %>">上一页</a><%} %>
<%if(index+amount<totalRows){ %> <a href="prcenter.jsp?lastID=<%out.print(lastGoods.getId()); %>">下一页</a><%} %>
错误信息
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at org.apache.jsp.basic.prcenter_jsp._jspService(prcenter_jsp.java:193) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Thread.java:619)
为0的话,你在一步步往上推,看哪里错了,没取到数据