zoukankan      html  css  js  c++  java
  • 使用Pager-taglib进行分页

    在.net中,我们有分页控件。在java中,我们有分页标签库。他们都已经为我们封装好了,我们只需要给这几个参数:数据、当前页码、每页记录数,就能完成分页,所以他们是大同小异的。

    今天来说说Pager-taglib 一套jsp分页标签库。

    直接看例子吧,那些基础知识看来枯燥无味,我会把他们放到最后,如果例子看不明白,再去看基础知识也不迟。



    使用

    使用之前,记得拷贝pager-taglib.jar包

    建立PageModel类以及实现分页的的Dao方法

    ①PageModel

     

    public class PageModel { 
        /** 
         * 总记录数  
         * */ 
        private int total; 
     
        /** 
         * 当前页的记录集  
         * */ 
        private List datas; 
        public int getTotal() { 
            return total; 
        }  
        public void setTotal(int total) { 
            this.total = total; 
        }  
        public List getDatas() { 
            return datas; 
        }  
        public void setDatas(List datas) { 
            this.datas = datas; 
        }  
    }  

     

    AlarmDaoImpl.java

     

    public PageModel findAllAlarm(int offset, int pagesize) { 
          
             //得到总记录数    
            String queryCountHql = "select count(*) from Alarm";     
                
            Query query = getSession().createQuery(queryCountHql);    
            int total = ((Long)query.uniqueResult()).intValue();    
                
            List datas = getSession().createQuery("from Alarm")    
                        .setFirstResult(offset)    
                        .setMaxResults(pagesize)    
                        .list();    
     
            //得到结果集    
            PageModel pm = new PageModel();    
            pm.setTotal(total);    
            pm.setDatas(datas);    
            return pm;    
     
        } 

     

    建立Action增加分页方法

     

    public String pagerTaglib() 
         {  
    // pageSize可以通过<pg:paramname="pagesize"  value="3" />在页面设定,在action中通过request.getParameter获得
          int pagesize=3;  
          int offset=0;  
     
          HttpServletRequest request = ServletActionContext.getRequest();  
          if(request.getParameter("pager.offset")!=null) 
           offset=Integer.parseInt(request.getParameter("pager.offset")); 
            
          PageModel pm=alarmManager.findAllAlarm(offset, pagesize); 
          request.setAttribute("pm", pm); 
          return "pagertaglib"; 
         } 


    建立JSP测试页面:page.jsp

     

    <!-- 导入JSTL、pagertaglib标签库-->
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib prefix="c"    uri="http://java.sun.com/jsp/jstl/core" %>   
    <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>   
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>   
        <head>   
            <title>测试 分页</title>   
        </head>   
           
        <body>   
            <h1>测试 分页</h1>   
            <hr/>   
               
            <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">   
            <tr bgcolor="#EFF3F7">   
              <TD align="center">ID</TD>   
              <TD align="center">内容</TD>   
              <TD align="center">时间</TD>   
              <TD align="center">相关操作</TD>   
            </tr>   
     
       <!-- 列表数据栏 -->
            <c:if test="${!empty pm.datas}">  
              <c:forEach items="${pm.datas}" var="alarm">  
                <tr bgcolor="#EFF3F7">   
                  <td align="center">${alarm.wid }</td>   
                  <td align="center">${alarm.wcontent }</td>   
                  <td align="center">${alarm.wtime}</td>   
                </tr>   
              </c:forEach>   
              </c:if>   
     
    <!-- 在列表数据为空的时候,要显示的提示信息 -->
             <c:if test="${empty pm.datas}">  
             <tr>   
                <td colspan="5" align="center" bgcolor="#EFF3F7">   
                没有找到相应的记录  
                </td>   
             </tr>   
             </c:if> 
            </table>   
     
     <!-- 在这里插入分页导航条 -->
            <pg:pager url="pagerTaglib!pagerTaglib" items="${pm.total}" export="currentPageNumber=pageNumber"maxPageItems="3">   
     
    <!-- 对url附加参数
    <pg:paramname="parentId"/>                
    如果有需要在分页之间保持某个参数,则可以使用<pg:param/>标签来定义(如parentId)
    -->
      <pg:first>   
        <a href="${pageUrl}">首页</a>   
      </pg:first>   
      <pg:prev>   
        <a href="${pageUrl }">上一页</a>   
      </pg:prev>   
     
      <pg:pages>   
        <c:choose>  
          <c:when test="${currentPageNumber eq pageNumber}">  
            <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 }">下一页</a>   
      </pg:next>   
      <pg:last>   
        <a href="${pageUrl }">尾页</a>   
      </pg:last>   
    </pg:pager>   
        </body>   
    </html>   


    可以通过<pg:param>,向URL中加入参数,比如<pg:paramname="pagesize"  value="3" />

    每次单击页面导航(比如上一页)时,页码的变化,可以在action中通过request.getParameter("pager.offset")得到,只是这些变化Pager-tablib已经为我们封装好了。


    基础

    一、简介

    Pager-taglib2.0是一套jsp分页标签库,可以灵活地实现多种不同风格的分页导航页面,也可以自定义风格样式。并且它可以很好的与服务器分页逻辑分离,它既可以对后台传入的集合进行分页,也可以从数据库中取出要显示那一页的数据。

     

    二、标签介绍

    pg:pager这个标签用来设置分页的总体参数,一切分页标签都在其内工作。

    url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数

    items:总记录数,pager标签正是根据这个值来计算分页参数的

    maxPageItems:每页显示的行数,默认为10

    maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10

    isOffset:与pg:item配套使用 

    export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffsetpageNumber,即页码偏移量及页码。通过这两个变量名,可以在JspJava里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在JspJava中可以得到。

    <pg:param>用来设置将要加入到URL的参数。使用Name属性指定即可,用于参数传递。

    <pg:index>这个标签说明分页条显示的内容,在这里你可以设置各种风格的分页显示方式。

    pg:first第一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-首页第一行的索引值

    lastItem-首页最后一行的索引值

    pg:pre上一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-前页第一行的索引值

    lastItem-前页最后一行的索引值

    pg:pages这个标签用来循环输出页码信息

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem- pageNumber这个页码指定的那一页的第一行的索引值

    lastItem- pageNumber这个页码指定的那一页的最后一行的索引值

    pg:next下一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-下页第一行的索引值

    lastItem-下页最后一行的索引值

    pg:last最后一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-尾页第一行的索引值

    lastItem-尾页最后一行的索引值


  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/pangblog/p/3253834.html
Copyright © 2011-2022 走看看