zoukankan      html  css  js  c++  java
  • 快速分页:jsp标签pagertaglib

    一:简介

      Pager-taglib,支持多种风格的分页显示。实际上它是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组 合,会形成多种不一样的分页页面,风格各异。它既可以对后台传入的集合进行分页,也可以从数据库中取出要显示那一页的数据。这里只关注后一种方式。

    二:知识要点

      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 - 尾页最后一行的索引值

    三:使用步骤

    1,拷贝pager-taglib.jar包到你的应用的\WEB-INF\lib下;
    2,在JSP页面中使用taglib指令引入pager-taglib标签库,一般会和jstl标记一起使用:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>

    3,个人整理的模板pager_taglib.jsp:(注:param参数是通过jsp:param标签传递进来的参数)

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>
    <script type="text/javascript">
    function selectPageSize(field){
        window.location = document.getElementById("firstPage").href + "&pageSize="+field.value;
    }
    </script>
        <pg:pager url="${param.url }" items="${param.totalCount }" maxPageItems="${param.pageSize }" maxIndexPages="10" 
      export="currentPageNumber=pageNumber">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="33%"><div align="left"><span class="STYLE22">    
                共有<strong> ${param.totalCount }</strong> 条记录,
                当前第<strong> ${currentPageNumber }</strong> 页,
                共 <pg:last>
                    <strong>${pageNumber }</strong></pg:last>
                </span></div>
            </td>
            <td width="67%" align=right vAlign="center" noWrap>
                <c:forEach items="${param.params}" var="p">
                    <pg:param name="${p}"/>
                    </c:forEach>
                <pg:first>
                    <a href="${pageUrl }" id="firstPage">首页</a>
                </pg:first>
                <pg:prev>
                    <a href="${pageUrl }">上页</a>
                </pg:prev>
                <pg:pages>
                    <c:choose>
                        <c:when test="${currentPageNumber eq pageNumber }">
                            <a href="${pageUrl }"><font color="red">${pageNumber }</font></a>
                        </c:when>
                        <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>
                  每页记录数:
                <select name="pagesize" onchange="selectPageSize(this)" >
                    <c:forEach begin="10" end="50" step="10" var="i">
                        <option value="${i }" <c:if test="${pageSize eq i }">selected</c:if> >${i }</option>
                    </c:forEach>
                </select>
          </td>
          </tr>
        </table>
        </pg:pager>
    View Code

    4,在分页的jsp页面给这个标签库传递多个参数:(以个人修改整理后的分页模板为例)

    (1)url:表单提交的地址

    (2)pageSize:每页显示的记录数

    (3)totalCount:总共的记录数

    (4)params:过滤条件参数,可多个或者没有

    分页的jsp页面使用示例如下:

    <jsp:include page="../common/pager_taglib.jsp">
        <jsp:param name="totalCount" value="${totalCount }"/>
        <jsp:param name="pageSize" value="${pageSize }"/>
        <jsp:param name="url" value="ArticleList.do"/>
        <jsp:param name="params" value="title,source,point"/>
    </jsp:include>

    5,后台接收的参数:

    (1)pager.offset:当点击第N页时,会以get的方式传递分页的起点索引。如点击第一页时,起点索引当然为0。

    四:注意事项

    (1)原官方jar包有bug,在UTF-8编码页面下传递中文会有乱码问题,可修改源码,对传入参数转码UTF-8,然后再打成jar包使用即可。

    (2)对于以get方式提交进行分页出现乱码的话,可在tomcat配置文件server.xml的<Connector>标签添加URIEncoding="UTF-8"。

    小小总结:这里体现了设计原则:封装变化。把可能变化的部分取出并封装起来,以便以后可以轻易改动或扩充此部分,而不影响不需要变化的部分。

    最后,本文参考于博客:http://www.cnblogs.com/hellojava/archive/2012/12/31/2840415.html

  • 相关阅读:
    GitHub统计
    不错的第三方控件
    仿射变换(CGAffineTransform)使用小结
    AffineTransform(仿射变换)
    使用CAShapeLayer实现复杂的View的遮罩效果
    使用CAShapeLayer实现一个音量大小动态改变的控件
    window10 Docker仓库访问
    postgresql从timestamp(6)复制到timestamp(0),时间会变
    在编译Dll文件的时候遇到dll 链接不一致的问题
    qtquery 取列的值
  • 原文地址:https://www.cnblogs.com/jianzhi/p/3326091.html
Copyright © 2011-2022 走看看