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


posted @ 2013-08-12 20:15  pangbangb  阅读(393)  评论(0编辑  收藏  举报