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`,你需要将对应的jar包(通常名为`pager-taglib-x.x.x.jar`)添加到项目的类路径中。这可以通过在`WEB-INF/lib`目录下放入jar包或者在构建工具如Maven或Gradle的依赖管理中进行设置来实现。 ...
要使用Pager-taglib,你需要完成以下步骤: 1. 将Pager-taglib的JAR包添加到项目的类路径中。 2. 在JSP页面中引入Pager-taglib的TLD文件,例如`<%@ taglib prefix="pg" uri="http://pager.taglib.java.com/pager"%>`...
- 首先,下载`pager-taglib-2.0.war`文件,这是一个Web应用的归档文件。 - 将`war`文件部署到你的应用服务器(如Tomcat、Jetty等)。这通常可以通过将`war`文件拷贝到服务器的`webapps`目录下完成,服务器会自动解压...
下面将详细阐述`pager-taglib`的使用方法、核心概念以及相关实例。 1. **分页原理** 分页是处理大量数据时常用的一种技术,通过将数据分割成多个小部分(页)来提高网页加载速度和用户体验。`pager-taglib`通过...
### 使用pager-taglib实现分页显示的详细步骤 在现代Web开发中,为了提升用户体验以及减轻服务器负担,分页功能成为了一个不可或缺的部分。本文将详细介绍如何利用`pager-taglib`结合SSH(Struts、Spring、...
3. **自定义标签**:在`pager-taglib`中,可能包含如`<pager:page>`、`<pager:prev>`、`<pager:next>`等标签,分别用于显示当前页、上一页和下一页的链接,以及分页导航的其他元素。 4. **属性和参数**:这些自定义...
`pager-taglib.jar`的出现简化了开发者的工作,它将分页逻辑封装在了标签库中,开发者只需要在JSP页面上使用特定的标签,就可以轻松实现分页。这个框架的主要优点在于其易用性和高效性,它减少了代码量,提高了开发...
本篇文章将详细解释`pager-taglib.jar`和`tld`文件的用途,以及如何在项目中使用它们。 1. **什么是`pager-taglib.jar`?** `pager-taglib.jar`是一个包含分页标签库实现的Java Archive (JAR) 文件。这个JAR文件...
pager-taglib 是个很好的jsp分页标签,使用它结合jstl可以实现灵活的分页导航功能。在实际的开发中post方式的提交比较常见,本人做了一个比较通用的基于post方式的一个应用。主要实现一下功能: 1.添加输入跳转、每...
**描述分析:**"pager-taglib-2.0 JSP分页组件 包括jar包和安装使用说明" 暗示我们收到了这个组件的完整包,其中包含了运行所需的jar文件以及关于如何在项目中安装和使用的详细指南。这通常意味着我们可以直接将此...
1. **引入库**:首先,你需要在项目的类路径中添加`pager-taglib-2.0.jar` 文件。这可以通过将文件放入WEB-INF/lib目录,或者在Maven或Gradle等构建工具中声明依赖来完成。 2. **配置TLD**:在Web应用的WEB-INF目录...
下面将详细解释`pager-taglib`的使用方法、核心概念以及其在实际项目中的应用。 一、`pager-taglib`概述 `pager-taglib`主要由两个部分组成:标签(Tag)和标签库(Taglib)。标签库是一个包含一系列标签的资源包,...
"pager-taglib-2.0" 是一个专为此目的设计的实用分页标记库,它能够帮助开发者快速构建出类似Google、Yahoo等知名网站的高质量分页效果。 **什么是Taglib** Taglib,全称JSP Tag Library,是JavaServer Pages(JSP...
`pager-taglib`是一个专门用于实现分页功能的标签库,它适用于Struts 2(S2SH)框架。这个第三方组件为开发者提供了便捷的方式来实现网页的动态分页,而无需编写大量的自定义逻辑代码。 `pager-taglib`的核心在于...
<taglib-location>/WEB-INF/tld/pager.tld</taglib-location> </taglib> ``` 这将告诉JSP引擎在哪里可以找到Pager Taglib的TLD(Tag Library Descriptor)文件。 ### 3. 使用Pager Taglib标签 Pager Taglib提供了...
这是pager-taglib的官方源码,但在采用官方的pager-taglib分页传输中文参数会出现乱码,所以我采用maven新建一个pager-taglib项目对pager-taglib的源码进行小小的改动,是他支持中文传输,更重要的是把源代码提供给...
**Pager-taglib分页方法详解** Pager-taglib是Java Web开发中一种常用的分页标签库,它极大地简化了在JSP页面中实现分页功能的过程。这个标签库通常与Servlet和JSP一起使用,尤其在大数据量展示时,提供用户友好的...
通过理解Action类的职责、Hibernate的数据访问机制以及Pager-taglib的使用方法,我们可以轻松地在实际项目中实现更复杂的分页需求。记住,实践是检验真理的唯一标准,动手尝试这个小例子,将有助于更好地理解和掌握...