【发布一个分页标签】

来源:互联网 发布:tc简单软件 编辑:程序博客网 时间:2024/05/21 10:28

    关于分页,确实是个老生常谈的问题了,见过的用过的分页组件也不少,这些标签和组件要么功能强大但是使用起来

很麻烦;要么功能简单,在多种应用场景下使用起来不是很顺畅。而且自己也不容易对其做扩展和改进。
    以前是忙于做项目,没时间写一些组件什么的,现在在带团队搞研发,能借助项目时间写一些常用的公共组件。结合

以往的使用经验,我自己实现了一个相对来说比较方便使用的分页标签,本着共享的精神,特拿出来与大家分享,希望能

帮助到一些人。现在发布的是x-pager-1.0.jar.

我们先来看看分页标签的使用场景有哪些:
1)使用场景:
大多数情况下,我们采用的是ext的grid,利用前台传递的start,limit参数,已经可以支持分页机制。而对于传统的JSP页

面,需要分页的支持时,需要采用分页标签。
目前标签支持的场景有3种:
 第一种:通过form提交的查询,这种查询是最常见的,一般有多个参数作为查询条件提交到后台。
 第二种:直接请求action的查询,这种查询一般是通过一个菜单或者一个链接,直接进入一个列表页面,而这个

列表页面时需要分页的。
 第三种:通过get方式,传递若干参数到某个指定的action或servlet。
2)分页标签的使用步骤:
对于第一种:通过form提交查询:
 引入jar包:x-pager-1.0.jar.
 用来查询的action必须继承com.tekview.apex.itsm.server.action.common.PagerAction
这个action有个抽象方法:getTotalSize()是必须由子类实现的,这个方法的作用就是根据当前的查询条件返回记录条数

,根据查询条件返回记录条数的方法在dao的基类里已经有了,不需要自己额外写。
 调用dao的分页查询方法,需要传递2个参数,start和limit,这两个参数都可以通过this.getStart()和

this.getPageSize()在action里获取。
 在提交的form里添加2个隐藏文本:
pageNo - 表示当前页码
pageSize – 表示每页显示条数
<input type="hidden" name="pageNo" id="pageNo"  value="1">
<input type="hidden" name="pageSize" id="pageSize" value="5">

 在需要展示分页的地方放置分页标签:<itsm:pager formId="listForm" />
只需要传递一个参数:formId,即提交查询的form的id.
例:
<!-- 遍历数据 --> 
<c:forEach items="${users}" var="user" varStatus="status">
   <li>
    <h3>
     <font color='blue'> ${status.count}: <c:out
       value="${user.name}" /> </font>
    </h3>
   </li>
   <br>
  </c:forEach>
  <form action="/TestA/index.do" method="POST" id="listForm">
   姓名:
   <input type="text" name="name">
   <input type="hidden" name="pageNo" id="pageNo"  value="1">
   <input type="hidden" name="pageSize" id="pageSize" value="5">
   <html:submit property="query">查询</html:submit>
  </form>
<!-- 分页标签  -->
 <itsm:pager formId="listForm" />

对于第二种:
 用来查询的action还是要继承com.tekview.apex.itsm.server.action.common.PagerAction并实现抽象方法:

getTotalSize()
 调用dao的分页查询方法,需要传递2个参数,start和limit,这两个参数都可以通过this.getStart()和

this.getPageSize()在action里获取。

 在需要展示分页的地方放置分页标签:<itsm:pager action="/TestA/index.do" />
这里的action是指直接请求的action。如查询一个user列表的action是/itsm/listUser.do,那么这个标签就写为:

<itsm:pager action="/itsm/listUser.do" />
例:
  <c:forEach items="${users}" var="user" varStatus="status">
   <li>
    <h3>
     <font color='blue'> ${status.count}: <c:out
       value="${user.name}" /> </font>
    </h3>
   </li>
   <br>
  </c:forEach>
<itsm:pager action="/itsm/listUser.do" />
对于第三种,其实和第二种一样,唯一不同的只是在action后面加上参数即可。
如,如查询一个user列表的action是/itsm/listUser.do?name=wy,那么这个标签就写为:<oss:pager

action="/TestA/index.do" qparams="name" qvalues="jack" pageSize="15"/>
如果传递多个参数:/itsm/listUser.do?name=wy&status=1
<oss:pager action="/TestA/index.do" qparams="name,status" qvalues="jack,1" pageSize="15"/>
这里的pageSize属性决定了每页以多少条显示。
3)分页的样式:
分页样式目前为:将来会支持样式扩展。通过参数cssClass来自由选择css样式。
 

下载地址见我空间里的资源,http://download.csdn.net/source/1908856

原创粉丝点击