现做一个项目,需要用到displaytag标签,以实现页面上的分页功能。
我先下载了displaytag-1.1.1-bin,里边包括需要的jar包及tld文件。我先将jar包引入了。也将tld文件拷入web-info下边了,也在web.xml加入了对tld的引用。
我将数据存入request里边传到页面上,用<display:table id="czy" name="allCzy" pagesize="10" class="simple">显示数据。
第一页显示完全正常,但点击下一页的话,就会报错,报错内容如下:
java.lang.IndexOutOfBoundsException: fromIndex = -2
at java.util.SubList.<init>(AbstractList.java:703)
at java.util.RandomAccessSubList.<init>(AbstractList.java:861)
at java.util.AbstractList.subList(AbstractList.java:570)
at org.displaytag.pagination.SmartListHelper.getListForPage(SmartListHelper.java:219)
at org.displaytag.pagination.SmartListHelper.getListForCurrentPage(SmartListHelper.java:200)
at org.displaytag.tags.TableTag.setupViewableData(TableTag.java:1525)
at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1198)
at org.apache.jsp.ewns.xtwh.czygl.XTWH_005fCZYGL_005flistCzy_jsp._jspService(XTWH_005fCZYGL_005flistCzy_jsp.java:199)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
后来,我将数据存入session中,用<display:table id="czy" name="sessionScope.allCzy" pagesize="10" class="simple">进行取的话,就没有上述问题了,但感觉数据都存在session中,会对服务器造成很大的负担,不怎么怎么解决这个问题.