今天写项目需要分页,网上有很多,选用了 pager-taglib.
首先把pager-taglib.jar 放入工程的lib下
然后jsp加入
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
采用的方式是 :从后台传入List,在jsp页面通过标签分页
<body>
<div class="main" id="main">
<div class="cpMod marT10">
<div class="cM_title">
<span class="tblock">History Record</span>
</div>
<div class="cpContent pad5">
<pg:pager url="historyValueByParam.action" index="center"
maxPageItems="10" maxIndexPages="10" isOffset="<%=false%>"
export="currentPageNumber=pageNumber" scope="request">
<pg:param name="type" value="${type}" />
<pg:param name="start" value="${start}" />
<pg:param name="end" value="${end}" />
<table class="table table-bordered table-hover" width="100%">
<tr>
<td colspan="6">
<form action="historyValueByParam.action" class="form-inline" role="form">
element: <select name="type" class="form-control" style="width: 140px;">
<option>Temperature</option>
<option>PH</option>
<option>Turbidity</option>
<option>Alkalinity</option>
</select> from:
<div class="form-group">
<input name="start" class="form-control" id="exampleInputEmail2"
class="Wdate" type="text" onclick="WdatePicker()"></input>
</div>
to:
<div class="form-group">
<input name="end" class="form-control" id="exampleInputPassword2"
class="Wdate" type="text" onclick="WdatePicker()"></input>
</div>
<button type="submit" class="btn btn-default">Query</button>
</form></td>
</tr>
<tr>
<th>recording time</th>
<th>recording type</th>
<th>max</th>
<th>min</th>
<th>avg</th>
<th>recorder</th>
</tr>
<s:iterator value="list" var="h">
<pg:item>
<tr>
<td><s:property value="#h[1]"/></td>
<td><s:property value="#h[2]"/></td>
<td><s:property value="#h[4]"/></td>
<td><s:property value="#h[3]"/></td>
<td><s:property value="(#h[3]+#h[4])/2"/></td>
<td><s:property value="#h[0]"/></td>
</tr>
</pg:item>
</s:iterator>
</table>
<pg:index>
<pg:first>
<a href="<%=pageUrl%>">首页</a>
</pg:first>
<pg:prev>
<a href="<%=pageUrl%>">上一页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:otherwise>
<a href="<%=pageUrl%>"><%=pageNumber%></a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="<%=pageUrl%>">下一页</a>
</pg:next>
<pg:last>
<a href="<%=pageUrl%>">尾页</a>
</pg:last>
</pg:index>
</pg:pager>
</div>
</div>
</div>
</body>
因为页面有条件查询,所以必须将条件参数带上
<pg:param name="type" value="${type}" />
<pg:param name="start" value="${start}" />
<pg:param name="end" value="${end}" />
这样在点击下一页时才能正常显示数据,否则会显示全部数据或没有数据(取决于 sql 语句),本人是后者没有数据。
另附上基本参数吧:
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 - 尾页最后一行的索引值