• JSP标签之pagertaglib分页标签


    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>
  • 相关阅读:
    Writing Custom Providers
    terraform 几个方便的工具
    几张简单的terraform flow 图——可以快速了解terraform的使用
    Stateful Kubernetes Applications Made Easier: PSO and FlashBlade
    使用k8s && minio 进行 postgres 数据库自动备份
    Understanding how uid and gid work in Docker containers
    nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架
    hasura graphql-engine graphql2chartjs 方便的graphql 转换chartjs 的类库
    nginx unit 1.8 支持基于java servlet 的开发模型
    试用 openresty/lua-resty-shell
  • 原文地址:https://www.cnblogs.com/hellojava/p/2840415.html
Copyright © 2020-2023  润新知