一个完全用JSTL实现的JSP分页方案

    技术2022-05-11  66

    样式是模仿Google的,我已经测试过了, 主要思想就是把分页模块用JSTL写成一个INCLUDE文件, 然后在要分页的页面调用, 当然要传入必要的五个分页参数 -------------------------------------------- pager.inc.jsp文件如下: ---------------------------------------------------------------------------------------- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!--接收参数total,总记录数--> <c:set var="total" value="${param.total}"/> <!--接收参数pageSize,每页最多显示的记录数--> <c:set var="pageSize" value="${param.pageSize}"/> <!--接收参数pageEnumShow,每次枚举的页面索引数--> <c:set var="pageEnumShow" value="${param.pageEnumShow}"/> <!--接收参数pageUrl,要分页的页面URL--> <c:set var="pageUrl" value="${param.pageUrl}"/> <c:choose> <c:when test="${total > 0}">   <c:choose>     <c:when test="${total % pageSize == 0}">       <c:set var="pageTotal" value="${total / pageSize}"/>     </c:when>     <c:otherwise>       <c:set var="pageTotal" value="${(total - total % pageSize) / pageSize + 1}"/>     </c:otherwise>   </c:choose>   <c:choose>     <c:when test="${empty param.pageIndex}">       <c:set var="pageIndex" value="1"/>     </c:when>     <c:otherwise>       <c:set var="pageIndex" value="${param.pageIndex}"/>     </c:otherwise>   </c:choose>   <table cellpadding="2" cellspacing="0">     <tr>       <c:choose>         <c:when test="${pageTotal > pageEnumShow}">           <c:choose>             <c:when test="${pageTotal - pageEnumShow + 1 >= pageIndex}">               <c:set var="pageStart" value="${pageIndex}"/>               <c:set var="pageEnd" value="${pageIndex + pageEnumShow - 1}"/>             </c:when>             <c:otherwise>               <c:set var="pageStart" value="${pageTotal - pageEnumShow + 1}"/>               <c:set var="pageEnd" value="${pageTotal}"/>             </c:otherwise>           </c:choose>         </c:when>         <c:otherwise>           <c:set var="pageStart" value="${pageIndex}"/>           <c:set var="pageEnd" value="${pageTotal}"/>         </c:otherwise>       </c:choose>       <c:if test="${pageIndex > 1}">         <td nowrap="nowrap">           <a href="${pageUrl}?pageIndex=${pageIndex - 1}">             <img alt="" src="images/prev.gif" border="0"/>             <br/>             <span style="font-size: 12pt;font-weight:bold">Previous</span>           </a>         </td>       </c:if>       <c:forEach begin="${pageStart}" end="${pageEnd}" var="i">         <td nowrap="nowrap">           <c:choose>             <c:when test="${i == pageIndex && pageIndex == 1}">               <img alt="" src="images/first.gif" border="0"/>               <br/>               1             </c:when>             <c:when test="${pageIndex != i}">               <a href="${pageUrl}?pageIndex=${i}">                 <img alt="" src="images/page.gif" border="0"/>                 <br/>                 <c:out value="${i}"/>               </a>             </c:when>             <c:when test="${pageIndex == i && pageIndex != pageTotal}">               <img alt="" src="images/current.gif" border="0"/>               <br/>               <c:out value="${i}"/>             </c:when>             <c:when test="${pageIndex == pageTotal && pageIndex == i}">               <img alt="" src="images/last.gif" border="0"/>               <br/>               <c:out value="${pageIndex}"/>             </c:when>           </c:choose>         </td>       </c:forEach>       <c:if test="${pageIndex < pageTotal}">         <td nowrap="nowrap">           <a href="${pageUrl}?pageIndex=${pageIndex + 1}">             <img alt="" src="images/next.gif" border="0"/>             <br/>             <span style="font-size: 12pt;font-weight:bold">Next</span>           </a>         </td>       </c:if>     </tr>   </table> </c:when> <c:otherwise>   暂无任何记录 !! </c:otherwise> </c:choose> --------------------------------------------页面调用实例(以Struts为例) <!--下面的这个JavaBean provider ,除了提供记录集合之外,还要提供计算记录总数的getter方法。我有一个简单的计算记录总数的思路就是让JavaBean把记录集保存为一个Collection,然后在它的getTotal方法里面简单地返回Collecition.size()就可以了!--> ---------------------------------------------------------------------------------------- <jsp:useBean id="provider" scope="request" class="mylib.UserBean"></jsp:useBean> <c:set var="items" scope="request" value="${provider.allItems}"/> ----------------------------------------------------------------------------------------   <c:catch var="exception"><!--捕捉异常-->     <c:set var="pageSize" value="5"/><!--定义每页显示的记录数-->     <!--INCLUDE分页文件-->     <c:import url="pager.inc.jsp">     <!--传入分页参数-->       <c:param name="total" value="${provider.total}"/>       <c:param name="pageSize" value="${pageSize}"/>       <c:param name="pageEnumShow" value="3"/>       <c:param name="pageUrl" value="index.jsp"/>       <c:param name="pageIndex" value="${param.pageIndex}"/>     </c:import>     <!--Iteration begin-->     <br/>     <br/>     <logic:iterate name="items" id="item" offset="${(param.pageIndex - 1) * pageSize}" length="${pageSize}">       <bean:write name="item" property="userName"/>       <br/>     </logic:iterate>     <!--Iteration end-->   </c:catch>   <!--检测异常-->   <c:if test="${!empty exception}">     <font color="red">查询过程中发生错误 !</font>   </c:if>

    最新回复(0)