`
ysen
  • 浏览: 119327 次
  • 性别: 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分页,含有多种分页样式,jar包都有,只要导入就可以运行,内附有说明,java 语言的

    pager-taglib使用指南 .txt

    pager-taglib使用指南 .txt 很详细,里面还有例子。

    pager-taglib-2.0及使用方法

    pager-taglib-2.0及使用方法,一个很好用的页面分页工具.

    pager-taglib 分页扩展实例

    pager-taglib 是个很好的jsp分页标签,使用它结合jstl可以实现灵活的分页导航功能。在实际的开发中post方式的提交比较常见,本人做了一个比较通用的基于post方式的一个应用。主要实现一下功能: 1.添加输入跳转、每...

    pager-taglib源码

    这是pager-taglib的官方源码,但在采用官方的pager-taglib分页传输中文参数会出现乱码,所以我采用maven新建一个pager-...以便可以根据需求重构pager-taglib引用,如果熟悉maven可以直接使用maven构建和安装到本地仓库

    pager-taglib-2.0

    pager-taglib-2.0,pager-taglib-2.0,pager-taglib-2.0,java分页标签。

    pager-taglib.jar

    利用pager-taglib进行查询分页时需要添加该jar包:pager-taglib.jar

    pager-taglib中文乱码解决后的JAR包

    用pager-taglib进行分页时,如果出现中文参数,由于pager-taglib默认是用ISO8859-1编码后进行参数传递,故会出现乱码现象。本人下载源码后,将编码的语句注释掉,即不进行编码,解决了中文乱码问题。改写后的代码已...

    pager-taglib.jar包下载

    pager-taglib.jar包下载.很方便的分页框架。这是jar包,希望能帮到大家

    pager-taglib分页jar包

    用于在jsp中进行分页的 pager-taglib包

    支持中文传输的pager-taglib.jar

    支持中文传输的pager-taglib.jar

    pager-taglib-2.0.jar 已解决乱码

    已解决中文乱码问题的 pager-taglib-2.0.jar包。

    pager-taglib-2.0完整源码和Struts演示示例工程

    在Struts中应用标签的数据库分页示例(dbpage.jsp),打开方法: http://localhost:8080/pagertaglib/dbPageAction.do?pageSize=5&pager.offset=0&pageNo=1&lt;br&gt;在Struts中应用标签但一次取数据在页面自动分页的示例...

    pager-taglib2.0 加强版

    maven仓库下载的pager-taglib2.0分页时 存在中文参数乱码问题。 须修改 源文件,附件为更改源码后的 jar包

    ssh+分页(pager-taglib)

    本资源融合了struts+spring+hibernate的集成,并充分运用jsp开源分页标签(pager-taglib)进行了分页。支持多条件的分页查询。由于上传大小限制,本人被迫将所用到的jar包目录删除,所需的几个必备jar包我已留在本...

    ssh2+pager-taglib实现自动分页

    Pager-taglib,支持多种风格的分页显示。实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格...

Global site tag (gtag.js) - Google Analytics