`
吕金含
  • 浏览: 84743 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

使用pager-taglib完成分页,以及对分页的分装

 
阅读更多

1.分页显示所必须需要知道的两个参数:总记录数和当前页数的返回结果集,所以第一要做的就是对这两个参数的分装,新建一个PagerModel类

public class PagerModel {
	
	/**
	 * 总记录数
	 */
	private int total; 
	/**
	 * 当前页结果集
	 */
	private List datas;
 
	public List getDatas() {
		return datas;
	}


	public void setDatas(List datas) {
		this.datas = datas;
	}


	public int getTotal() {
		return total;
	}


	public void setTotal(int total) {
		this.total = total;
	}
}
2.之后实现对PagerModel类的分装,新建一个AbstractManager类;
 public class AbstractManager extends HibernateDaoSupport {
	 
   public PagerModel searchPaginated(String hql,int offset,int pagesize){
	   return searchPaginated(hql,null,offset, pagesize);
   }
   public PagerModel searchPaginated(String hql,Object obj,int offset,int pagesize){
	   return searchPaginated(hql, new Object[]{obj},offset, pagesize);  
   }
    public PagerModel searchPaginated(String hql,Object[] params,int offset,int pagesize){
	     String countHql=getCountQuery(hql);
	     Query query=getSession().createQuery(countHql);
	     if(params != null && params.length > 0){
				for(int i=0; i<params.length; i++){
					query.setParameter(i, params[i]);
				}
			}
	    //总页数
	     int total=((Long)query.uniqueResult()).intValue();
	    //获得当前页数的结果集;
	    query=getSession().createQuery(hql);
	    if(params != null && params.length > 0){
			for(int i=0; i<params.length; i++){
				query.setParameter(i, params[i]);
			}
		}
	    query.setFirstResult(offset);
	    query.setMaxResults(pagesize);
	    List datas=query.list();
	    PagerModel pm=new PagerModel();
	    pm.setTotal(total);
	    pm.setDatas(datas);
	    return pm;
   }
   private String getCountQuery(String hql){
	    int index=hql.indexOf("from");
	    if(index!=-1){
	    	return "select count(*)"+hql.substring(index);
	    } 
	    throw new SystemException("无效的hql语句");
	     
   }
}
3.在实现类中去继承AbstractManager这个分装类
public class OrgManagerImpl extends AbstractManager implements OrgManager {
 
 	public PagerModel findOrgs(int parentId,int offset,int pagesize) {
		 
 	//如果parentId=0,则查找顶级机构列表
 		if(parentId == 0){
 		return searchPaginated("from Orgnization o where o.parent is null",offset,pagesize);
 	}
 		return searchPaginated("from Orgnization o where o.parent.id = ?", parentId,offset,pagesize);
       }
}

4.在action类中获得参数之后,将参数传入到jsp页面

public class OrgAction extends DispatchAction {
	 @Override
	protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		OrgActionForm oaf = (OrgActionForm)form;
		
		int offset = 0;
		try {
			offset = Integer.parseInt(request.getParameter("pager.offset"));
		} catch (Exception ignore) {
		}
		
		int pagesize = 10;
		
		request.setAttribute("pm",
			orgManager.findOrgs(oaf.getParentId(),offset,pagesize)
		);
		
		//
		int ppid = 0;
		if(oaf.getParentId() != 0){
			Orgnization org = orgManager.findOrg(oaf.getParentId());
			Orgnization parent = org.getParent();
			if(parent != null){
				ppid = parent.getId();
			}
		}
		
		request.setAttribute("ppid", ppid);
		
		return mapping.findForward("index");
	}
}

5.在jsp页面中使用pager-taglib插件完成分页,以下是分页显示代码

<pg:pager url="org.do" items="${pm.total }" export="currentPageNumber=pageNumber">
	<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>







分享到:
评论

相关推荐

    使用pager-taglib分页完整例子

    为了使用`pager-taglib`,你需要将对应的jar包(通常名为`pager-taglib-x.x.x.jar`)添加到项目的类路径中。这可以通过在`WEB-INF/lib`目录下放入jar包或者在构建工具如Maven或Gradle的依赖管理中进行设置来实现。 ...

    Pager-taglib页面分页示例

    要使用Pager-taglib,你需要完成以下步骤: 1. 将Pager-taglib的JAR包添加到项目的类路径中。 2. 在JSP页面中引入Pager-taglib的TLD文件,例如`&lt;%@ taglib prefix="pg" uri="http://pager.taglib.java.com/pager"%&gt;`...

    pager-taglib分页标签

    - 首先,下载`pager-taglib-2.0.war`文件,这是一个Web应用的归档文件。 - 将`war`文件部署到你的应用服务器(如Tomcat、Jetty等)。这通常可以通过将`war`文件拷贝到服务器的`webapps`目录下完成,服务器会自动解压...

    pager-taglib 分页框架+附带例子

    下面将详细阐述`pager-taglib`的使用方法、核心概念以及相关实例。 1. **分页原理** 分页是处理大量数据时常用的一种技术,通过将数据分割成多个小部分(页)来提高网页加载速度和用户体验。`pager-taglib`通过...

    使用pager-taglib实现分页显示的详细步骤

    ### 使用pager-taglib实现分页显示的详细步骤 在现代Web开发中,为了提升用户体验以及减轻服务器负担,分页功能成为了一个不可或缺的部分。本文将详细介绍如何利用`pager-taglib`结合SSH(Struts、Spring、...

    pager-taglib分页jar包

    3. **自定义标签**:在`pager-taglib`中,可能包含如`&lt;pager:page&gt;`、`&lt;pager:prev&gt;`、`&lt;pager:next&gt;`等标签,分别用于显示当前页、上一页和下一页的链接,以及分页导航的其他元素。 4. **属性和参数**:这些自定义...

    pager-taglib.jar包下载

    `pager-taglib.jar`的出现简化了开发者的工作,它将分页逻辑封装在了标签库中,开发者只需要在JSP页面上使用特定的标签,就可以轻松实现分页。这个框架的主要优点在于其易用性和高效性,它减少了代码量,提高了开发...

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

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

    pager-taglib 分页扩展实例

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

    pager-taglib-2.0 JSP分页组件

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

    pager-taglib-2.0

    1. **引入库**:首先,你需要在项目的类路径中添加`pager-taglib-2.0.jar` 文件。这可以通过将文件放入WEB-INF/lib目录,或者在Maven或Gradle等构建工具中声明依赖来完成。 2. **配置TLD**:在Web应用的WEB-INF目录...

    pager-taglib 分页标签使用

    下面将详细解释`pager-taglib`的使用方法、核心概念以及其在实际项目中的应用。 一、`pager-taglib`概述 `pager-taglib`主要由两个部分组成:标签(Tag)和标签库(Taglib)。标签库是一个包含一系列标签的资源包,...

    pager-taglib-2.0.rar

    "pager-taglib-2.0" 是一个专为此目的设计的实用分页标记库,它能够帮助开发者快速构建出类似Google、Yahoo等知名网站的高质量分页效果。 **什么是Taglib** Taglib,全称JSP Tag Library,是JavaServer Pages(JSP...

    pager-taglib 实现分页

    `pager-taglib`是一个专门用于实现分页功能的标签库,它适用于Struts 2(S2SH)框架。这个第三方组件为开发者提供了便捷的方式来实现网页的动态分页,而无需编写大量的自定义逻辑代码。 `pager-taglib`的核心在于...

    pager-taglib-2.0及使用方法

    &lt;taglib-location&gt;/WEB-INF/tld/pager.tld&lt;/taglib-location&gt; &lt;/taglib&gt; ``` 这将告诉JSP引擎在哪里可以找到Pager Taglib的TLD(Tag Library Descriptor)文件。 ### 3. 使用Pager Taglib标签 Pager Taglib提供了...

    pager-taglib源码

    这是pager-taglib的官方源码,但在采用官方的pager-taglib分页传输中文参数会出现乱码,所以我采用maven新建一个pager-taglib项目对pager-taglib的源码进行小小的改动,是他支持中文传输,更重要的是把源代码提供给...

    pager-taglib分页方法

    **Pager-taglib分页方法详解** Pager-taglib是Java Web开发中一种常用的分页标签库,它极大地简化了在JSP页面中实现分页功能的过程。这个标签库通常与Servlet和JSP一起使用,尤其在大数据量展示时,提供用户友好的...

    struts2+pager-taglib 实现分页小例子

    通过理解Action类的职责、Hibernate的数据访问机制以及Pager-taglib的使用方法,我们可以轻松地在实际项目中实现更复杂的分页需求。记住,实践是检验真理的唯一标准,动手尝试这个小例子,将有助于更好地理解和掌握...

Global site tag (gtag.js) - Google Analytics