JSP标签之pager-taglib分页标签
JSP标签之pager-taglib分页标签
前言:现在进行的项目分页使用了pager-taglib分页标签,个人觉得用起来挺方便的。
1、简介
Pager-taglib 2.0 是一套jsp分页标签库,可以灵活地实现多种不同风格的分页导航页面,也可以自定义风格样式。并且它可以很好的与服务器分页逻辑分离,它既可以对后台传入的集合进行分页,也可以从数据库中取出要显示那一页的数据。
2、标签介绍
1.pg:pager
这个标签用来设置分页的总体参数,一切分页标签都在其内工作。
- url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
- items:总记录数,pager标签正是根据这个值来计算分页参数的
- maxPageItems:每页显示的行数,默认为10
- maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
- isOffset:与pg:item配套使用
- export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及pageNumber,即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。
2.pg:param
用来设置将要加入到URL的参数。使用Name属性指定即可,用于参数传递。
3.pg:index
这个标签说明分页条显示的内容,在这里你可以设置各种风格的分页显示方式。
4.pg:first
第一页标签
- pageUrl - 分页链接URL地址
- pageNumber - 页码
- firstItem - 首页第一行的索引值
- lastItem - 首页最后一行的索引值
5.pg:pre
上一页标签
- pageUrl - 分页链接URL地址
- pageNumber - 页码
- firstItem - 前页第一行的索引值
- lastItem - 前页最后一行的索引值
6.pg:pages
这个标签用来循环输出页码信息
- pageUrl - 分页链接URL地址
- pageNumber - 页码
- firstItem - pageNumber这个页码指定的那一页的第一行的索引值
- lastItem - pageNumber这个页码指定的那一页的最后一行的索引值
7.pg:next
下一页标签
- pageUrl - 分页链接URL地址
- pageNumber - 页码
- firstItem - 下页第一行的索引值
- lastItem - 下页最后一行的索引值
8.pg:last
最后一页标签
- pageUrl - 分页链接URL地址
- pageNumber - 页码
- firstItem - 尾页第一行的索引值
- lastItem - 尾页最后一行的索引值
3、两种分页方式实例
首先把pager-taglib-2.0.jar放入工程的lib下。
然后在分页JSP中引入<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>。
1、从后台传入List结果集,在页面上通过<pg:item>对List进行自动分页
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%> <pg:pager url="${pageContext.request.contextPath}/sysParamAction.do" index="center" maxPageItems="10" maxIndexPages="10" isOffset="<%=false%>" export="pageOffset,currentPageNumber=pageNumber" scope="request"> <pg:param name="m" value="findSysparams" /> <table> <tr> <td colspan="2">XX列表</td> </tr> <tr> <td>XX</td> <td>XX</td> </tr> <c:forEach items="${list }" var="list" varStatus="listStatus"> <pg:item> <c:if test="${1 == listStatus.count % 2 }"> <tr class="tab_list_tr2" onmouseover= this.className = 'tab_list_tr_hover';; onmouseOut= this.className = 'tab_list_tr2';;> </c:if> <c:if test="${0 == listStatus.count % 2 }"> <tr class="tab_list_tr" onmouseover= this.className = 'tab_list_tr_hover';; onmouseOut= this.className = 'tab_list_tr';;> </c:if> <td>${list.xx }</td> <td>${list.xx }</td> </tr> </pg:item> </c:forEach> </table> <pg:index> <pg:first> <a href="<%=pageUrl%>"><img src="${ctx}/images/grid/firstPage.gif" border="0"></a> </pg:first> <pg:prev> <a href="<%=pageUrl%>"><img src="${ctx}/images/grid/prevPage.gif" border="0"></a> </pg:prev> <pg:pages> <c:choose> <c:when test="${pageNumber eq currentPageNumber}"> <font color="red">[<%=pageNumber%>]</font> </c:when> <c:otherwise> <a href="<%=pageUrl%>"><%=pageNumber%></a> </c:otherwise> </c:choose> </pg:pages> <pg:next> <a href="<%=pageUrl%>"><img src="${ctx}/images/grid/nextPage.gif" border="0"></a> </pg:next> <pg:last> <a href="<%=pageUrl%>"><img src="${ctx}/images/grid/lastPage.gif" border="0"></a> </pg:last> 一共${fn:length(list) }条记录 </pg:index> </pg:pager>
2、通过把 pageSize,pageNo两参数传给后台进行数据库分页
与页面自行分页不同的是还需要给后台传两个参数。一个是pageNo(当前页数),可以在每一个PageUrl后面都加上&pageNo=<%= pageNumber %>。让我们的URL带上页码的参数,这样程序可以拿到页码去查找所需要的数据。另一个参数是pagesize,这个原本可以在url=”/PageAction.do?pagesize=5来做可是,<pg>标签不支持这样做,但它给我们提供了另一个传递变量的方法,<pg:param name=" pagesize " value="5" />。
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%> <pg:pager items="${page.totalCount}" url="${pageContext.request.contextPath}/sysParamAction.do" index="center" maxPageItems="5" maxIndexPages="10" isOffset="<%=false%>" export="pageOffset,currentPageNumber=pageNumber" scope="request"> <pg:param name="m" value="findSysparams" /> <pg:param name="pagesize" value="5" /> <table> <tr> <td colspan="2">XX列表</td> </tr> <tr> <td>XX</td> <td>XX</td> </tr> <c:forEach items="${list }" var="list" varStatus="listStatus"> <c:if test="${1 == listStatus.count % 2 }"> <tr class="tab_list_tr2" onmouseover= this.className = 'tab_list_tr_hover';; onmouseOut= this.className = 'tab_list_tr2';;> </c:if> <c:if test="${0 == listStatus.count % 2 }"> <tr class="tab_list_tr" onmouseover= this.className = 'tab_list_tr_hover';; onmouseOut= this.className = 'tab_list_tr';;> </c:if> <td>${list.xx }</td> <td>${list.xx }</td> </tr> </c:forEach> </table> <pg:index> <pg:first> <a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><img src="${ctx}/images/grid/firstPage.gif" border="0"></a> </pg:first> <pg:prev> <a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><img src="${ctx}/images/grid/prevPage.gif" border="0"></a> </pg:prev> <pg:pages> <c:choose> <c:when test="${pageNumber eq currentPageNumber}"> <font color="red">[<%=pageNumber%>]</font> </c:when> <c:otherwise> <a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><%=pageNumber%></a> </c:otherwise> </c:choose> </pg:pages> <pg:next> <a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><img src="${ctx}/images/grid/nextPage.gif" border="0"></a> </pg:next> <pg:last> <a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><img src="${ctx}/images/grid/lastPage.gif" border="0"></a> </pg:last> 一共${fn:length(list) }条记录 </pg:index> </pg:pager>