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这个页码指定的那一页的最后一行的索引值
分享到:
相关推荐
`pager-taglib`是一个开源的JSP标签库,提供了一系列易于使用的分页标签,如`<pager:page>`、`<pager:previous>`、`<pager:next>`等,开发者只需在JSP页面中引入这些标签,就可以快速构建出具有分页功能的列表页面。...
本篇文章将详细解释`pager-taglib.jar`和`tld`文件的用途,以及如何在项目中使用它们。 1. **什么是`pager-taglib.jar`?** `pager-taglib.jar`是一个包含分页标签库实现的Java Archive (JAR) 文件。这个JAR文件...
在`pager-taglib的安装和使用.txt`文件中,可能包含了更详细的使用示例和配置说明,建议参考该文件进行实践操作。 ### 结论 Pager Taglib 2.0是实现高效、灵活页面分页的利器。通过理解并熟练使用它的各种标签和...
4. **文档**:如README、用户手册等,提供了关于如何安装、配置和使用pager-taglib的详细说明。 5. **许可证文件**:包含了该库的许可协议,规定了使用和分发的条款。 **详细知识点** 1. **JSP标签库**:JSP标签库...
**描述分析:**"pager-taglib-2.0 JSP分页组件 包括jar包和安装使用说明" 暗示我们收到了这个组件的完整包,其中包含了运行所需的jar文件以及关于如何在项目中安装和使用的详细指南。这通常意味着我们可以直接将此...
### pager-taglib的安装与使用 #### 一、概述 `pager-taglib`是一种用于Web应用程序中的分页处理工具,特别适用于JavaServer Pages (JSP) 技术栈中的项目。它通过提供一系列标签库(Tag Library)来简化前端分页...
5. **Documentation**:说明文档是理解如何使用这个分页标签库的关键。它应该包含了安装步骤、使用示例、API参考以及可能遇到的问题和解决方案。文档中提到的GOOGLE和YAHOO样式,可能是指预设的两种流行分页样式模板...
本文将深入探讨`pager-tagl.tld`的含义、作用以及如何安装和使用。 首先,我们需要了解什么是TLD(Tag Library Descriptor)。TLD是JSP标准标签库的一部分,它定义了一个或多个自定义标签的行为和属性,使得开发者...
feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function ... taglib ...更多说明,参见 pager 标签:feilong
本篇文章将详细讲解如何在Java Web应用中使用分页标签。我们将主要围绕以下两个核心概念进行讨论:源码理解和工具的使用。 首先,我们需要理解分页的基本原理。在Web应用中,当数据量过大时,一次性加载所有数据...
- **JSP标签引入**:在JSP页面顶部使用`<%@ taglib>`指令引入Ecside标签库,例如`<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>`。 - **CSS和JS引用**:在页面头部加入Ecside的样式表(如`...