`
ysen
  • 浏览: 122178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pager-taglib 使用说明

    博客分类:
  • j2ee
阅读更多

1、拷贝pager-taglib.jar包
2、在JSP页面中使用taglib指令引入pager-taglib标签库
3、使用pager-taglib标签库进行分页处理

 

 

传两个值进去: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>

 

 

 定义一个获取分页所需变量的拦截器 获取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这个页码指定的那一页的最后一行的索引值

 

 

分享到:
评论
5 楼 roychenyi 2015-07-24  
<br>1<br>2<br>3
4 楼 roychenyi 2015-07-24  
<br>换行<br>换行<br>
3 楼 wangwenfei1985 2014-02-21  
[flash=200,200][url][img][list]
[*]
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
            
[/list][/img][/url][/flash]
2 楼 Jackie_GP 2011-10-20  
freemarker如何使用这个呢?
1 楼 dreameratje 2010-09-17  
我在使用的时候会报错,请教一下:
(1)如果有maxPageItems="${pagesize}"这句会出现 500 \by 0的错误。
(2)如果删掉后上面那行会出现
Error setting expression 'pager.offset' with value '[Ljava.lang.String;@c7e8af'
ognl.OgnlException: target is null for setProperty(null, "offset", [Ljava.lang.String;@c7e8af)

另外我的配置文件

<interceptors>
      <!-- 定义拦截器 -->
      <interceptor name="pagerInerceptor" class="tsinghua.weblab.common.PagerInterceptor"/>
    </interceptors>

<action name="patentsList" class="struts2.action.PatentsListAction">
  <result name="success">PatentsList.jsp</result>
  <interceptor-ref name="params">
        <param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>
      </interceptor-ref>
      <interceptor-ref name="pagerInerceptor"/>
</action>

相关推荐

    pager-taglib分页标签

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

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

    本篇文章将详细解释`pager-taglib.jar`和`tld`文件的用途,以及如何在项目中使用它们。 1. **什么是`pager-taglib.jar`?** `pager-taglib.jar`是一个包含分页标签库实现的Java Archive (JAR) 文件。这个JAR文件...

    pager-taglib-2.0及使用方法

    在`pager-taglib的安装和使用.txt`文件中,可能包含了更详细的使用示例和配置说明,建议参考该文件进行实践操作。 ### 结论 Pager Taglib 2.0是实现高效、灵活页面分页的利器。通过理解并熟练使用它的各种标签和...

    pager-taglib-2.0.rar

    4. **文档**:如README、用户手册等,提供了关于如何安装、配置和使用pager-taglib的详细说明。 5. **许可证文件**:包含了该库的许可协议,规定了使用和分发的条款。 **详细知识点** 1. **JSP标签库**:JSP标签库...

    pager-taglib-2.0 JSP分页组件

    **描述分析:**"pager-taglib-2.0 JSP分页组件 包括jar包和安装使用说明" 暗示我们收到了这个组件的完整包,其中包含了运行所需的jar文件以及关于如何在项目中安装和使用的详细指南。这通常意味着我们可以直接将此...

    pager-taglib的安装与使用

    ### pager-taglib的安装与使用 #### 一、概述 `pager-taglib`是一种用于Web应用程序中的分页处理工具,特别适用于JavaServer Pages (JSP) 技术栈中的项目。它通过提供一系列标签库(Tag Library)来简化前端分页...

    pager-taglib-2.0.war

    5. **Documentation**:说明文档是理解如何使用这个分页标签库的关键。它应该包含了安装步骤、使用示例、API参考以及可能遇到的问题和解决方案。文档中提到的GOOGLE和YAHOO样式,可能是指预设的两种流行分页样式模板...

    pager-tagl.tld

    本文将深入探讨`pager-tagl.tld`的含义、作用以及如何安装和使用。 首先,我们需要了解什么是TLD(Tag Library Descriptor)。TLD是JSP标准标签库的一部分,它定义了一个或多个自定义标签的行为和属性,使得开发者...

    JSP常用自定义标签集feilong-taglib.zip

    feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function ...  taglib ...更多说明,参见 pager 标签:feilong

    Java Web中分页标签的使用说明

    本篇文章将详细讲解如何在Java Web应用中使用分页标签。我们将主要围绕以下两个核心概念进行讨论:源码理解和工具的使用。 首先,我们需要理解分页的基本原理。在Web应用中,当数据量过大时,一次性加载所有数据...

    ecside 文 档

    - **JSP标签引入**:在JSP页面顶部使用`&lt;%@ taglib&gt;`指令引入Ecside标签库,例如`&lt;%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %&gt;`。 - **CSS和JS引用**:在页面头部加入Ecside的样式表(如`...

Global site tag (gtag.js) - Google Analytics