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


你可能感兴趣的:(taglib)