前端页面组件开发工具Pager-taglib
一、Pager-taglib简介
1、Pager-taglib
支持多种风格的分页显示。它是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有八种左右的分页风格(在pager-taglib-2.0.war包下的WEB-INF\jsp 中),包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。
2、分页方式有两种:
一种是:页面分页,即从Action或者其他控制器中得到一个List,在页面上 通过pg:item进行自动分页。适合查询结果不大的情况。
第二种是:数据库分页,即通过把 pageSize,pageNo两参数传给后台进行数据库分页。 适合大量查询。
二、Pager-taglib标签详解
1、pg:pager标签(分页时我们重点设置的就是这个标签):这个标签用来设置分页的总体参数,重要参数说明:
**url:**分页的链接根地址,pager标签会在这个链接上附加分页参数pager.offset,后台可根据这个参数分页, 也可自行在URL上添加参数。
**items:**总记录数,pager标签正是根据这个值来计算分页参数的。在页面分页时,此参数可以不写,后台会自动计算出分页参数。如果你写的话将以你写的为准。
**maxPageItems:**每页显示的行数,也即每页显示的记录数,默认为10(这里如果将它误写成maxItems则就还会显示,但是偏移量一定为10页)。 不写此标签,你会发现分页的条数在小于10的时候显示不出来一些数据。当大于10的时候则会出现重复的记录! 如:maxPageItems = “4”
对maxPageItems测试
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<pg:pager url="/pagTaglib/page2.jsp" maxIndexPages="10" export="currentPageNumber=pageNumber"
items="1000" maxPageItems="5">
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">上页</a>
</pg:prev>
<pg:pages>
<c:if test="${pageNumber eq currentPageNumber}">
${pageNumber}
</c:if>
<c:if test="${not (pageNumber eq currentPageNumber)}">
<a href="${pageUrl}">${pageNumber}</a>
</c:if>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">末页</a>
</pg:last>
</pg:pager>
</body>
</html>
测试结果:
对maxItems(最大记录数)测试
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<pg:pager url="/pagTaglib/page3.jsp" maxIndexPages="10" export="currentPageNumber=pageNumber"
items="1000" maxItems="100">
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">上页</a>
</pg:prev>
<pg:pages>
<c:if test="${pageNumber eq currentPageNumber}">
${pageNumber}
</c:if>
<c:if test="${not (pageNumber eq currentPageNumber)}">
<a href="${pageUrl}">${pageNumber}</a>
</c:if>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">末页</a>
</pg:last>
</pg:pager>
</body>
</html>
测试结果:
maxPageItems和maxItems放在一起测试:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<pg:pager url="/pagTaglib/page3.jsp" maxIndexPages="4" export="currentPageNumber=pageNumber"
items="50" maxPageItems="7">
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">上页</a>
</pg:prev>
<pg:pages>
<c:if test="${pageNumber eq currentPageNumber}">
${pageNumber}
</c:if>
<c:if test="${not (pageNumber eq currentPageNumber)}">
<a href="${pageUrl}">${pageNumber}</a>
</c:if>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">末页</a>
</pg:last>
</pg:pager>
</body>
</html>
测试结果:
综上测试结果对比结论:maxItems对于这种页面显示没有任何作用!!!
**maxIndexPages:**在循环输出页码的时候,最大输出多少个页码(也就是最多显示多少个页码),默认是10.如:maxIndexPages=“3”
**export:**这个属性比较重要,这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有 pageOffset及pageNumber,即页码偏移量及页码。通过这两个变量名,可以在Jsp或servlet(或者Action)里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage(自定义的)的变量,这个变量将被保存到Request中,在Jsp或servlet中可以得到。通常设为:export=“pageOffset,currentPageNumber=pageNumber”.这里使用currentPageNumber=pageNumber的原因是pg:pages(不是page)标签输出用于存放每次循环的页码号的变量也叫pageNumber。
**scope:**将export暴漏出变量,设置器存储范围。取值为:request、session等。默认保存在request范围内。