Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 403|回复: 0

[jsp学习]分页标签库Pager

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-2 02:37:48 | 显示全部楼层 |阅读模式
    分页标签库Pager
       
    N.1 简介  使用Pagers标签库可以实现分页功能。 开发者主页 N.2 用法 JSP中动态生成表格的代码一般如下所示:   
       
       
         
         <
         table
         >
         

         <%
         ...
         
        for(int i = 0; i < 行数; i++)
        {

         %>
         
       
         <
         tr
         >
         
            
         <
         td
         >
         内容
         </
         td
         >
         
       
         </
         tr
         >
         

         <%
         ...
         
        }

         %>
         

         </
         table
         >
         
       
       在本章中我使用pg作为Pager标签库的前缀。 如果要使用Pager标签库进行分页处理的话,需要使用<pg:pager>标签将<table>包括在内,然后在内部使用一系列的Pager标签表示上一页、下一页等控制按钮。常用的控制标签如下表所示:
       
         
          
          标签
          说明
          
          
          pager
          主标签,包括整个动态表格
          
          
          first
          第一页
          
          
          skip
          页面跳转
          
          
          prev
          上一页
          
          
          pages
          页码
          
          
          next
          下一页
          
          
          last
          最后一页
          
         
        下面是一个例子,源代码如下所示: <%...
        Vector<String[]> v = (Vector<String[]>)request.getAttribute("table_list");
        int maxPageItems = 25;
        String url = "/INtools/Db/ListTable.action";
        int item_count = v.size();
        int page_count = item_count % maxPageItems == 0 ? item_count / maxPageItems : item_count / maxPageItems + 1;
    %>
    <form id="form1" name="form1" method="post" action="">
    <pg:pager
        items="<%= item_count %>"
        url="<%= url %>"
        index="center"
        maxPageItems="<%= maxPageItems %>"
        maxIndexPages="10"
        isOffset="true"
        export="offset,currentPageNumber=pageNumber"
        scope="request">
    <table border="1" cellspacing="0" cellpadding="3" bordercolordark="#ffffff"
                                bordercolorlight="#000066" width="100%" bgcolor="#76a6c7">
        <tr class="table_desc">
            <td colspan="3">后台表集合</td>
        </tr>
        <tr class="table_title">
            <td width="33%">表名</td>
            <td width="33%">所属模块</td>
            <td width="34%">操作</td>
        </tr>
    <%...
        for(int iRow = offset.intValue(), l = Math.min(iRow + maxPageItems, v.size()); iRow < l; iRow++)
        {
            String[] row_data = v.get(iRow);
            String table_name = row_data[0];
            String module_name = row_data[1];
            String table_id = row_data[2];
            String bgcolor = iRow % 2 == 0 ? "#f4fbff" : "#FFFFDD";
    %>                                       
        <pg:item>
        <tr bgcolor="<%=bgcolor%>" class="table_data">
            <td align="left"><%=table_name%></td>
            <td align="left"><%=module_name%></td>
            <td align="center">
                <input type="button" value="修改" />
                <input type="button" value="删除" />
            </td>
        </tr>
        </pg:item>
    <%...
        }
    %>                                       
        <tr class="table_page_break">
            <td colspan="3">
                记录数: <%= item_count %>
                页数:<%= page_count %>
                <pg:first export="firstPageUrl=pageUrl" unless="current">
                    <a href="<%= firstPageUrl %>">|<</a>
                </pg:first>
                <pg:skip export="skipBackPageUrl=pageUrl" pages="<%= -10 %>">
                    <a href="<%= skipBackPageUrl %>"><<<</a>
                </pg:skip>
                <pg:prev export="prevPageUrl=pageUrl">
                    <a href="<%= prevPageUrl %>"><<</a>
                </pg:prev>
                <pg:pages><%...
                  if (pageNumber == currentPageNumber) {
                    %> <b><%= pageNumber %></b> <%...
                  } else {
                    %> <a href="<%= pageUrl %>"><%= pageNumber %></a> <%...
                  }
                %></pg:pages>
                <pg:next export="nextPageUrl=pageUrl">
                    <a href="<%= nextPageUrl %>">>></a>
                </pg:next>
                <pg:skip export="skipForwardPageUrl=pageUrl" pages="<%= 10 %>">
                    <a href="<%= skipForwardPageUrl %>">>>></a>
                </pg:skip>
                <pg:last export="lastPageUrl=pageUrl" unless="current">
                    <a href="<%= lastPageUrl %>">>|</a>
                </pg:last>
                <input type="text" size="4" name="page_no" id="page_no" />
                <input type="button" value="go" onclick="goto_page_no()" />
            </td>
        </tr>
        <tr class="table_button_row">
            <td colspan="3">
                <input type="button" value="确定" class="form_button" />
            </td>
        </tr>
    </table>
    </pg:pager>
    </form>
    <script type="text/javascript">...

    function goto_page_no()
    ...{
        var em_page_no = document.all["page_no"];   
        var page_no = parseInt(em_page_no.value);
        var offset = <%= maxPageItems %> * (page_no - 1);
        document.location.href = "<%= url %>?pager.offset=" + offset;
    }

    </script>
       
         
       
       分页效果如下图所示:
      获取数据 该段代码用于获取显示的页面数据,在此做了如下设定,取得的显示数据的格式为Vector<String[]>,每页显示25行记录,获取页数据时需要重新执行查询,其处理操作为/INtools/Db/ListTable.action,这里我使用了struts框架,这表示一个Servlet处理类,也可以是一个JSP文件。并进行了页数计算。 pager标签
       
        items:表示记录数
        url:表示获取数据时的处理程序
        index:页码的显示方式,可以为center、forward、half-full
        maxPageItems:每页显示的记录数
        maxIndexPages:显示的页码数
        isOffset;
        export:将pager标签支持的变量导出,  
        N.3 技巧 如果要实现如下功能:
       
        指定跳转到某页
        生成分页内容时需要参数TableName  
        可写入如下代码:
       
       
         
         <
         form
         id
         ="form1"
          name
         ="form1"
          method
         ="get"
          action
         ="..."
         >
         
    ...
       
         <
         pg:param
         name
         ="TableName"
          value
         ="<%= search_table_name %>"
          
         />
         
       
         <
         input
         type
         ="hidden"
          name
         ="TableName"
          id
         ="TableName"
          value
         ="<%= search_table_name %>"
          
         />
         
       
         <
         input
         type
         ="hidden"
          name
         ="pager.offset"
          
         />
         
       
         <
         input
         type
         ="button"
          value
         ="go"
          onclick
         ="goto_page_no()"
          
         />
         
    ...

         </
         form
         >
         


         <
         script
         type
         ="text/javascript"
         >
         ...
         

    function goto_page_no()
    ...{
        var offset = 记录偏移值;
        var frm = document.form1;
        frm.elements["pager.offset"].value = offset;
        frm.submit();
    }


         </
         script
         >
         
          其中<pg:param>是用于点击页码翻页时提供查询参数,如果打开生成后的源代码,会发现所有的翻页标记(<a>)都加了一个参数TableName,而<input type="hidden" name="TableName" />则用于指定跳转页时提供查询参数,<input type="hidden" name="pager.offset" />则用于提供指定跳转页时的记录偏移量,其名称格式为“[pager].[pg:pager标签的export属性中的offset表示法]”。 值得注意的是,此处的<form>需要使用“get”方式,如果使用“post”方式,使用跳转按钮提交的“TableName”参数会翻倍,例如,第一次为“a”,第二次则为“a,a”。  

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/2/023747484.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-27 01:48 , Processed in 0.424558 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表