pager-taglib 使用说明

http://www.iteye.com/topic/626524

 

 

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

 

 

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

Java代码 复制代码
  1. <!-- 可以在这里插入分页导航条 -->   
  2.            
  3.            
  4.            
  5. <pg:pager url="org.action" items="${pm.totles}"  export="currentPageNumber=pageNumber" maxPageItems="${pagesize}">   
  6.     <pg:param name="parentId"/>   
  7.        
  8.         
  9.     <pg:first>   
  10.         <a href="${pageUrl}">首页</a>   
  11.     </pg:first>   
  12.     <pg:prev>   
  13.         <a href="${pageUrl}">前页</a>   
  14.     </pg:prev>   
  15.     <pg:pages>   
  16.         <c:choose>   
  17.             <c:when test="${currentPageNumber eq pageNumber}">   
  18.                 <font color="red">${pageNumber }</font>   
  19.             </c:when>   
  20.             <c:otherwise>    
  21.                 <a href="${pageUrl}">${pageNumber }</a>   
  22.             </c:otherwise>   
  23.         </c:choose>   
  24.     </pg:pages>   
  25.     <pg:next>   
  26.         <a href="${pageUrl}">后页</a>   
  27.     </pg:next>   
  28.     <pg:last>   
  29.         <a href="${pageUrl}">尾页</a>   
  30.     </pg:last>   
  31. /pg:pager>    
    <!-- 可以在这里插入分页导航条 -->
            
            
            
<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 这个值是页面标签传给后台进行分页的

Xml代码 复制代码
  1.  <interceptor-ref name="params">  
  2.                   <param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>  
  3.                 </interceptor-ref>  
 <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*,^struts\..*,pager\.offset</param>
                </interceptor-ref>

 

 

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

 

Java代码 复制代码
  1. public class PagerInterceptor extends AbstractInterceptor{   
  2.   
  3.     @Override  
  4.     public String intercept(ActionInvocation invocation) throws Exception {   
  5.            
  6.   
  7.         SystemContext.setOffset(getOffset());   
  8.         SystemContext.setPageSize(getPagesize());   
  9.            
  10.            
  11.   
  12.         try{   
  13.             return invocation.invoke();   
  14.         }finally{   
  15.             SystemContext.removeOffset();   
  16.             SystemContext.removePagesize();   
  17.         }   
  18.            
  19.            
  20.            
  21.     }   
  22.   
  23.        
  24.     private int getOffset(){   
  25.         int offset = 0;   
  26.            
  27.         try {   
  28.             offset = Integer.parseInt(ServletActionContext.getRequest().getParameter("pager.offset"));   
  29.         } catch (Exception ignore) {   
  30.         }   
  31.         return offset;   
  32.     }   
  33.        
  34.     private int getPagesize(){   
  35.     int pagesize = 0;   
  36.            
  37.         try {   
  38.             pagesize = Integer.parseInt(ServletActionContext.getRequest().getParameter("pagesize"));   
  39.         } catch (Exception ignore) {   
  40.         }   
  41.            
  42.         if(pagesize==0){   
  43.                
  44.             pagesize=10;   
  45.                
  46.         }   
  47.     //  System.out.println(pagesize);   
  48.         return pagesize;   
  49.     }   
  50.   
  51. }  
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 变量 存储上面的两个值

 

Java代码 复制代码
  1. public class SystemContext {   
  2.        
  3.     public static ThreadLocal offset = new ThreadLocal();   
  4.        
  5.     public static ThreadLocal pageSize = new ThreadLocal();   
  6.        
  7.     public static int DEFAULT_PAGE_SIZE= 10;    
  8.   
  9.     public static  void setOffset(int _offset){   
  10.            
  11.         offset.set(_offset);   
  12.            
  13.     }   
  14.   
  15.     public static int getOffset(){   
  16.            
  17.         Integer _offset = (Integer)offset.get();   
  18.            
  19.         if( _offset ==null){   
  20.                
  21.             _offset=0;   
  22.         }   
  23.             
  24.          return _offset;   
  25.     }   
  26.        
  27.     public static void removeOffset(){   
  28.         offset.remove();   
  29.     }   
  30.        
  31.        
  32.     public static void setPageSize(int _pageSize){   
  33.            
  34.         pageSize.set(_pageSize);   
  35.     }   
  36.        
  37.     public static int getPageSize(){   
  38.            
  39.         Integer _pageSize= (Integer)pageSize.get();   
  40.            
  41.         if( _pageSize ==null){   
  42.                
  43.             _pageSize=DEFAULT_PAGE_SIZE;   
  44.         }   
  45.             
  46.          return _pageSize;   
  47.         
  48.     }   
  49.        
  50.     public static void removePagesize(){   
  51.         pageSize.remove();   
  52.     }   
  53. }  
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中传值的麻烦

Java代码 复制代码
  1. public class BaseManager extends HibernateDaoSupport {   
  2.   
  3. ...   
  4.   
  5.   
  6.   
  7. PageMode searchOrgs(String hql, Object[] objects){   
  8. ...        
  9.         int offset  = SystemContext.getOffset();   
  10.         int pageSize = SystemContext.getPageSize();   
  11.            
  12. ...   
  13.     List datas =   query.setFirstResult(offset).setMaxResults(pageSize).list();   
  14. ...   
  15. }   
  16.   
  17.   
  18. }  
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();
...
}


}

 

 

 

 

 

 

 

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

Html代码 复制代码
  1. <body>  
  2. <pg:pager items="1001" maxPageItems="33" maxIndexPages="20" export="currentPageNumber=pageNumber">  
  3.     <pg:first>  
  4.         <a href="${pageUrl }">首页</a>  
  5.     </pg:first>  
  6.     <pg:prev>  
  7.         <a href="${pageUrl }">前页</a>  
  8.     </pg:prev>  
  9.     <pg:pages>  
  10.         <c:choose>  
  11.             <c:when test="${currentPageNumber eq pageNumber}">  
  12.                 <font color="red">${pageNumber }</font>  
  13.             </c:when>  
  14.             <c:otherwise>  
  15.                 <a href="${pageUrl }">${pageNumber }</a>  
  16.             </c:otherwise>  
  17.         </c:choose>  
  18.     </pg:pages>  
  19.     <pg:next>  
  20.         <a href="${pageUrl }">下页</a>  
  21.     </pg:next>  
  22.     <pg:last>  
  23.         <a href="${pageUrl }">尾页</a>  
  24.     </pg:last>  
  25. </pg:pager>  
  26. </body>  
<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 传进去

 

Html代码 复制代码
  1.         <!-- 可以在这里插入分页导航条 -->  
  2.    <s:include value="/common/pager.jsp">  
  3.         <s:set var="url" value="'org.action'"/>  
  4.       <s:set var="params" value="#{'parentId':null}"/>  
  5.    </s:include>  
	    <!-- 可以在这里插入分页导航条 -->
   <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这个页码指定的那一页的最后一行的索引值

 

 

jsp 分页:

 

http://xuxiaolei.iteye.com/blog/165058

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值