传两个值进去:1、pm.totles总记录数 2、pagesize 每页显示页数 3、<pg:param name="parentId"/>传给后台的变量值对(查询条件)

    <!-- 可以在这里插入分页导航条 -->

<pg:pager url="org.action" items="${pm.totles}"  export="currentPageNumber=pageNumber" maxPageItems="${pagesize}">
<pg:param name="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>

  struts2的配置文件 变量拦截器中添加 pager\.offset 这个值是页面标签传给后台进行分页的

 <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>
                </interceptor-ref>

  Xml代码

 <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>
                </interceptor-ref>

   定义一个获取分页所需变量的拦截器 获取pagesize 每页数 与 开始记录数pager.offset

public class PagerInterceptor extends AbstractInterceptor{

	@Override
public String intercept(ActionInvocation invocation) throws Exception { SystemContext.setOffset(getOffset());
SystemContext.setPageSize(getPagesize()); try{
return invocation.invoke();
}finally{
SystemContext.removeOffset();
SystemContext.removePagesize();
} } private int getOffset(){
int offset = 0; try {
offset = Integer.parseInt(ServletActionContext.getRequest().getParameter("pager.offset"));
} catch (Exception ignore) {
}
return offset;
} private int getPagesize(){
int pagesize = 0; try {
pagesize = Integer.parseInt(ServletActionContext.getRequest().getParameter("pagesize"));
} catch (Exception ignore) {
} if(pagesize==0){ pagesize=10; }
// System.out.println(pagesize);
return pagesize;
} }

  上面使用了两个ThreadLocal 变量 存储上面的两个值

public class SystemContext {

	public static ThreadLocal offset = new ThreadLocal();

	public static ThreadLocal pageSize = new ThreadLocal();

	public static int DEFAULT_PAGE_SIZE= 10; 

	public static  void setOffset(int _offset){

		offset.set(_offset);

	}

	public static int getOffset(){

		Integer _offset = (Integer)offset.get();

		if( _offset ==null){

			_offset=0;
} return _offset;
} public static void removeOffset(){
offset.remove();
} public static void setPageSize(int _pageSize){ pageSize.set(_pageSize);
} public static int getPageSize(){ Integer _pageSize= (Integer)pageSize.get(); if( _pageSize ==null){ _pageSize=DEFAULT_PAGE_SIZE;
} return _pageSize; } public static void removePagesize(){
pageSize.remove();
}
}

    通过从threadlocal 中获取分页所需的变量,就可以在业务类中获取这两个变量,避免了在每个action中传值的麻烦

public class BaseManager extends HibernateDaoSupport {

...

PageMode searchOrgs(String hql, Object[] objects){
...
int offset = SystemContext.getOffset();
int pageSize = SystemContext.getPageSize(); ...
List datas = query.setFirstResult(offset).setMaxResults(pageSize).list();
...
} }

    为了使用方面将上面的分页标签页面提取出公共的部分

<body>
<pg:pager items="1001" maxPageItems="33" maxIndexPages="20" export="currentPageNumber=pageNumber">
<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>

     需要分页的页面只需如下调用:将url 传进去

	    <!-- 可以在这里插入分页导航条 -->
   <s:include value="/common/pager.jsp">
     <s:set var="url" value="'org.action'"/>
     <s:set var="params" value="#{'parentId':null}"/>
   </s:include>

  

pg:pager【这个标签用来设置分页的总体参数】重要参数说明:
 url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
 items:总记录数,pager标签正是根据这个值来计算分页参数的
 maxPageItems:每页显示的行数,默认为10
 maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
 
pg:first【第一页的标签】重要参数说明:
 export变量的意义:
 pageUrl - 分页链接URL地址(最重要的export参数)
 pageNumber - 页码
 firstItem - 首页第一行的索引值
 lastItem - 首页最后一行的索引值
 
pg:pre【上一页标签】重要参数说明:
 export变量的意义:
 pageUrl - 分页链接URL地址(最重要的export参数)
 pageNumber - 页码
 firstItem - 前页第一行的索引值
 lastItem - 前页最后一行的索引值

pg:next【下一页标签】重要参数说明:
 export变量的意义:
 pageUrl - 分页链接URL地址(最重要的export参数)
 pageNumber - 页码
 firstItem - 下页第一行的索引值
 lastItem - 下页最后一行的索引值
 
pg:last重要参数说明:
 export变量的意义:
 pageUrl - 分页链接URL地址(最重要的export参数)
 pageNumber - 页码
 firstItem - 尾页第一行的索引值
 lastItem - 尾页最后一行的索引值
 
pg:pages【这个标签用来循环输出页码信息】重要参数说明:
 export变量的意义:
 pageUrl - 分页链接URL地址(最重要的export参数)
 pageNumber - 页码
 firstItem - pageNumber这个页码指定的那一页的第一行的索引值
 lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

pager-taglib 使用说明2的更多相关文章

  1. pager-taglib分页处理的使用

    pager-taglib是java中一个用于分页的小的框架.下面简单介绍一下它的具体使用. 一.环境的搭建: 将pager-taglib-2.0.war包拷贝到Tomcat的webapps下.启动To ...

  2. springmvc 孔浩 hibernate code

    model--User package model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; ...

  3. 分页技术框架(Pager-taglib)学习二(SSH数据库分页)

    一.Pager-taglib数据库分页前提    Pager-taglib分页标签也可以实现数据库分页,与页面分页不同的是需要给后台传两个参数,一个是pageNo(当前页数)或pageOffset(偏 ...

  4. 使用pager进行分页

    pager jar网址:http://java2s.com/Code/Jar/t/Downloadtaglibspagejar.htm package com.binary.entity; impor ...

  5. Mustache 使用说明

    Mustache 使用说明 最近在升级SinGooCMS到MVC架构.管理前端使用了Mustache模板,把使用心得记录一下! 一.官网http://mustache.github.io/https: ...

  6. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  7. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  8. [JSP]自定义标签库taglib

    自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...

  9. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  10. 自己写的一个Pager分页组件,WebForm,Mvc都适用

    我一说写这个功能的时候,好多人估计有疑问.分页功能网上多的是,搜一个不就行了,你这样不是浪费时间么.你说这句话的时候,我是比较信的,首先自己写一些东西是很耗时,有这些时间又能多打几盘LOL了.但是我觉 ...

随机推荐

  1. (转)iOS5:[UIDevice uniqueIdentifier]的替代方案

    背景: 大多数应用都会用到苹果设备的UDID号,UDID通常有以下两种用途: 1)用于一些统计与分析目的:[第三方统计工具如友盟,广告商如ADMOB等] 2)将UDID作为用户ID来唯一识别用户,省去 ...

  2. WIN7局域网文件共享设置方法

    WIN7局域网文件共享设置方法 工具/原料 两台电脑以上的局域网.WIN7操作系统 步骤/方法 1 右击桌面网络----属性----更改高级共享设置 (注释:查看当前网络 比如:家庭网络.公共网络 等 ...

  3. [置顶] Android访问控制系统测试与评估

    5.1实验方案 通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方 ...

  4. rpm包安装

    RPM全称是“RedHatPackageManager”是由RedHat公司发发展起来的,本质是将软件源码包经过编译并且打包成rpm的格式,rpm文件包含的有二进制文件,配置文件,库文件等,同时RPM ...

  5. SVN 代码下载,上传

    代码下载,如: svn co https://99.99.16.1:8080/svn/pavenas/webpy --username bg 代码上传,如: svn commit -m "备 ...

  6. JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺

    一.语法: 区分大小写; 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($).                   ...

  7. DNN7网站系统需求及部署指南详解

    此安装指南适用于DNN6.x和DNN7.x在本地测试及主机的安装.最近QQ群里不少朋友问我关于DotNetNuke的安装和运行的问题. 为了让大家更清楚地了解DNN的安装方式,我在这里对DotNetN ...

  8. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

  9. Java系列--第三篇 基于Maven的Android开发CAIO

    学习要打好基础,这里用一个项目来学习一下Android的组件,参考网址为这个但不限于这个.有些东西的学习,理解三遍理论还不如一遍操作,所谓理论来自实践,实践是检验真理的唯一标准.所以,虽然看懂了那篇文 ...

  10. PHP 计算页面执行时间

    PHP 计算页面执行时间 < ?php class runtime { var $StartTime = 0; var $StopTime = 0; function get_microtime ...