`
我想我是海
  • 浏览: 214799 次
社区版块
存档分类
最新评论

pager-taglib 体验

阅读更多

      可能是自已习惯了用自已的分页组件。一直不知道有这样一个现成的分页标签。直到那天,白衣跟我提起了一下,我Search了一下,发现了Pager-taglib这个东东。支持多种风格的分页显示。
       先简单介绍一下Pager-taglib。实际上,她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。
      接触的当天、匆匆看了下Demo和文档,发现这个很早(2002年最新版一直到现在)就已经有的东西,似 乎比较擅长显示端分页。如,把所有的数据传到页面,通过参数设定页面大小等,可能得到很完美的分页效果。
      第二天回家,做了些小动作,把一个页码参数塞进URL里面,让程序在页面之下分了页再把结果传出来,简单地实现了服务器的分页的功能。
      Pager-taglib的文档很详尽,我如果有说也只有翻译的份,要是真的翻译也就免了,文档还是挺容易看懂的。于是我开始作了另外一个小Demo,用了原先Demo里面的一个分页风格(Simple),稍作修改。希望能帮助自已理清脉络和对朋友们有用:P
一、模拟业务类:

package  net.jf.ajax.business;

import  java.util.ArrayList;
import  java.util.List;

public   class  PageManager  {
    
private   static  List names;
    
{
        names 
=   new  ArrayList();
        names.add(
" black " );
        names.add(
" black " );
        names.add(
" black " );
        names.add(
" black " );
        names.add(
" blue " );
        names.add(
" blue " );
        names.add(
" blue " );
        names.add(
" blue " );
        names.add(
" blue " );
        names.add(
" red " );
        names.add(
" yellow " );
        names.add(
" blue " );
        names.add(
" green " );
        names.add(
" blue " );
        names.add(
" black " );
        names.add(
" green " );
        names.add(
" black " );
    }

    
/** */ /**
     * 查询函数
     * 
@param  pageNum 页码
     * 
@param  pageSize 页大小
     * 
@param  condition 查询条件
     * 
*/

    
public  List query( int  pageNum, int  pageSize,String condition) {
        List tmpNames 
=  getNames(condition);
        List ret 
=   new  ArrayList();
        
int  start  =  (pageNum  -   1 *  pageSize;
        
int  end  =  start  +  pageSize  -   1 ;
        
if (start  >=  tmpNames.size())
            
return  ret;
        
for ( int  i  =   0 ; i  <  tmpNames.size(); i  ++ ) {
            
if (i  >=  start  &&  i  <=  end)
                ret.add(tmpNames.get(i));
        }

        
return  ret;
    }

    
/** */ /**
     * 按条件查询所有名字
     * 
*/

    
private  List getNames(String condition)  {
        
if ( null   ==  condition)  return  names;
        List ret 
=   new  ArrayList();
        
        
for ( int  i  =   0 ; i  <  names.size(); i  ++ ) {
            
if (condition.equals(names.get(i)))
                ret.add(names.get(i));
        }

        
return  ret;
    }

    
/** */ /**
     * 获得条件指定的名字的数量
     * 
*/

    
public   int  getSize(String condition) {
            
return  getNames(condition).size();
    }

}

二、JSP代码:
本页面提供了列表、查找功能。目的在于演示在Pager-taglib里面如何传递参数(如Form的Post后URL是找不到参数的,但是要保持原来的查询条件必须把这些参数在分页的时候加到URL上去)。

<% @ page language = " java "   import = " java.util.* "  pageEncoding = " UTF-8 " %>
<% @ taglib uri = " http://jsptags.com/tags/navigation/pager "  prefix = " pg "   %>
<%
request.setCharacterEncoding(
" UTF-8 " );
%>
< jsp:useBean id  =   " pm "  scope = " page "   class = " net.jf.ajax.business.PageManager " />
<! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
  
< head >
  
</ head >
  
  
< body >
    
< form name = " cc "  action = " pager.jsp "  method = " post " >
        
< input type = " text "  name = " name "  value = " <%=request.getParameter( " name " )%> " />< input type = " submit "  value = " search " />
    
</ form >
    
< pg:pager
    items
= " <%= pm.getSize(request.getParameter( " name " )) %> "
    index
= " center "
    maxPageItems
= " 5 "
    maxIndexPages
= " 5 "
    isOffset
= " <%= false %> "
    export
= " pageOffset,currentPageNumber=pageNumber "
    scope
= " request " >
    
<%
    
int  pageNum  =   1 ;
    
if (request.getParameter( " pageNo " !=   null )
        pageNum 
=  Integer.valueOf(request.getParameter( " pageNo " ));
    
int  pageSize  =   5 ;
      List result 
=  pm.query(pageNum,pageSize,request.getParameter( " name " ));
  
%>
    
< table >
        
< tr >
            
< td > result </ td >
        
</ tr >
        
<% for ( int  i  =   0 ; i  <  result.size(); i  ++ ) { %>
        
< tr >
            
< td >
                
<%= result.get(i) %>
            
</ td >
        
</ tr >
        
<% }
%>
    
</ table >
    
    
< pg:param name = " name " />
    
< pg:index >
        
< jsp:include page = " /pagination/jsptags.jsp "  flush = " true " />
    
</ pg:index >
    
</ pg:pager >
  
</ body >
</ html >


从页面里可以看到,这里使用了三个标签

1、<pg:pager>,在这个标签库里就充当着一个领袖的作用,一切子标签都在它里面工作。就以上出现的参数进行解释一下:
items:数据的纪录数
index:说起来比较麻烦,反正是一次大跳跃之后,当前页面在各个页数的什么位置,默认为Center,不动也罢了。
maxPageItems:显示最多的纪录数/页
maxIndexPages:显示最多的分页数/次,如设为5的话,则会出现这样的情况 1 2 3 4 5 .或 3 4 5 6 7 这样的形式,其实她自带的DEMO都喜欢把页数展现出来排成一排。
isOffset:与pg:item配套使用,页pg:item基本上被我淘汰出局。
export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及pageNumber,即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。
scope:咳。还需要讲么?

2、<pg:param>这个标签很有用,用来设置将要加入到URL的变量。使用Name属性指定即可。

3、<pg:index>这个标签说明分页显示开始了。跳进我们Include的页面。再看看详细的情况。

三、分页显示页面

<% @ page session = " false "  contentType = " text/html;charset=utf-8 " %>
<% @ taglib uri = " http://jsptags.com/tags/navigation/pager "  prefix = " pg "   %>
< pg:first >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ # <%=  pageNumber  %>  首页 ] </ nobr ></ a >
</ pg:first >
< pg:skip pages = " <%= -5 %> " >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ # <%=  pageNumber  %>  后退 ] </ nobr ></ a >
</ pg:skip >
< pg:prev >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ # <%=  pageNumber  %>  前一页 ] </ nobr ></ a >
</ pg:prev >
< pg:pages >
   
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " ><%=  pageNumber  %></ a >  
</ pg:pages >
< pg:next >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ 下一页 # <%=  pageNumber  %>  ] </ nobr ></ a >
</ pg:next >
< pg:skip pages = " <%= 5 %> " >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ 跳进 # <%=  pageNumber  %>  ] </ nobr ></ a >
</ pg:skip >
< pg:last >
  
< a href = " <%= pageUrl %>&pageNo=<%= pageNumber %> " >< nobr > [ 尾页 # <%=  pageNumber  %>  ] </ nobr ></ a >
</ pg:last >


没错,你看到的这些标签都是导航标签。很容易明白,用法基本上一致,从标签的名字上就能看出是什么作用。告诉你我动了手脚的地方就是我在每一个PageUrl后面都加了&pageNo=<%= pageNumber %>。让我们的URL带上页码的参数,这样程序可以拿到页码去查找所需要的数据。

结果很理想。在SpringSide领了个分页标签的任务,原来还想着自已实现一套标签的。还好被白衣喝住了。。卡卡。摸清楚了整套标签的使用方法后,很容易就可以把一些重复的东西再稍作封装,变成有“特色”的东西。幸亏没有重复发明轮子(脸红啊,还发明呢~~~)。

       天色已早。这几天再继续研究和“拿来”。有经验再一起交流。。


参考资料:
http://jsptags.com/tags/navigation/pager/index.jsp Pager-taglibs官网
http://www.springside.org.cn/ SpringSide 春天的旁边(需要我们的参与)
分享到:
评论
3 楼 weirihai 2008-05-27  
还能提供简单的
我也等着用呢

谢谢!!!!
2 楼 weirihai 2008-05-27  
代码都挺复杂的
还能 有简单的啊
1 楼 olymic2010 2008-04-17  
                                   

相关推荐

    使用pager-taglib分页完整例子

    为了使用`pager-taglib`,你需要将对应的jar包(通常名为`pager-taglib-x.x.x.jar`)添加到项目的类路径中。这可以通过在`WEB-INF/lib`目录下放入jar包或者在构建工具如Maven或Gradle的依赖管理中进行设置来实现。 ...

    pager-taglib.jar包下载

    **标题:“pager-taglib....通过这样的方式,`pager-taglib`可以帮助开发者快速实现一个功能完善的分页系统,提高开发效率,同时提供良好的用户体验。无论是对于初学者还是经验丰富的开发者,都是一个非常实用的工具。

    pager-taglib-2.0.rar

    通过以上步骤,开发者就可以利用"pager-taglib-2.0" 创建出美观且高效的分页效果,提升Web应用的用户体验。 **总结** "pager-taglib-2.0" 是一个强大且灵活的分页标记库,它简化了Web开发中的分页实现,使得开发者...

    pager-taglib-2.0

    《Java分页标签库——pager-taglib-2.0详解》 在Web开发中,数据分页是一项必不可少的功能,它能够有效地管理大量数据,提高页面加载速度,优化用户体验。Java中,`pager-taglib-2.0`是一个专门用于处理分页的标签...

    pager-taglib分页标签

    `pager-taglib`是一个开源的JSP标签库,提供了一系列易于使用的分页标签,如`&lt;pager:page&gt;`、`&lt;pager:previous&gt;`、`&lt;pager:next&gt;`等,开发者只需在JSP页面中引入这些标签,就可以快速构建出具有分页功能的列表页面。...

    pager-taglib分页jar包

    总结来说,`pager-taglib分页jar包`是JSP开发中的一个重要工具,它简化了Web应用中的数据分页实现,提高了代码的可读性和可维护性,同时也优化了用户体验。通过理解和正确使用这个库,开发者能够更有效地管理大型...

    pager-taglib jar 和 tld 以及使用说明

    `pager-taglib`是一个用于实现分页的自定义标签库,它通过JSP标签来简化分页逻辑的编写。本篇文章将详细解释`pager-taglib.jar`和`tld`文件的用途,以及如何在项目中使用它们。 1. **什么是`pager-taglib.jar`?** ...

    pager-taglib 分页框架+附带例子

    在JSP页面中,首先需要引入`pager-taglib`的TLD文件,通常是在`WEB-INF`目录下创建一个`taglibs`目录,然后将`pager.taglib.xml`放入其中,并在JSP页面头部引入: ```jsp &lt;%@ taglib prefix="pg" uri="/WEB-INF/...

    pager-taglib-2.0及使用方法

    **Pager Taglib 2.0详解与使用指南** Pager Taglib是Java Web开发中的一个强大工具,主要用于实现页面的分页功能。它提供了一组自定义的JSP标签,简化了在网页上创建分页链接的过程,使得开发者可以更加专注于业务...

    pager-taglib_jar

    `pager-taglib_jar`文件是一个包含这个标签库的JAR包,它是开发者在项目中引入`pager-taglib`功能所必需的。 `pager-taglib`的核心思想是将分页逻辑与显示逻辑分离,遵循MVC(Model-View-Controller)设计模式。...

    pager-taglib.jar

    "pager-taglib.jar" 是一个Java Web开发中的库文件,主要用于实现分页功能。在Web应用中,当数据量较大时,通常会采用分页显示的方式,以提高用户体验和加载速度。Pager Taglib是一个标签库,它提供了一组自定义JSP...

    pager-taglib 分页标签使用

    `pager-taglib`是Java Web开发中常用的分页标签库,它简化了在JSP页面上实现分页功能的过程。这个标签库通常与Spring MVC、Struts2等框架结合使用,提供了一种声明式的方式来展示数据分页。下面将详细解释`pager-...

    pager-taglib实现用户信息分页

    在这个实例中,开发者使用了PagerTaglib库,这是一个基于JSP自定义标签库,用于方便地在网页上实现数据的分页展示。 PagerTaglib库是基于JSTL(JavaServer Pages Standard Tag Library)的扩展,它简化了在JSP页面...

    pager-taglib分页方法

    **Pager-taglib分页方法详解** Pager-taglib是Java Web开发中一种常用的分页标签库,它极大地简化了在JSP页面中实现分页...通过学习和熟练掌握Pager-taglib,你可以为你的应用程序带来更加高效和用户友好的分页体验。

    pager-taglib.zip

    【标题】"Pager-taglib.zip" 是一个专用于网页分页功能的标签库,它包含了一个已经调试通过的Web工程,可以直接在项目中应用。这个压缩包的核心是 "pager-taglib.jar" 文件,这是一个Java档案,封装了分页的相关逻辑...

    displaytag,pager-taglib 分页包

    Displaytag和Pager-taglib是两个在Java Web开发中常用的分页库,主要用于处理大量数据的显示,提升用户体验,减轻服务器压力。这两个库都是基于JSP标签库(Tag Library)实现的,可以方便地集成到Spring、Struts等...

    pager-taglib 实现分页

    在Java Web开发中,分页是必不可少的功能,...在处理大数据量展示时,使用`pager-taglib`可以极大地提升用户体验,同时降低开发复杂度。在使用过程中,根据项目的具体需求进行适当的配置和调整,就能充分发挥其优势。

    分页处理框架pager-taglib

    **分页处理框架pager-taglib详解** 在Java Web开发中,分页处理是常见的需求,尤其是在数据量庞大的情况下,为了提高用户体验,我们需要将数据分批显示。`pager-taglib`是一个专门为解决这个问题而设计的轻量级分页...

Global site tag (gtag.js) - Google Analytics