`

使用pager taglib进行分页(下拉框动态指定每页显示的条数)

阅读更多
1、把pager-taglib.jar拷贝到项目的lib目录下

2、在要使用的jsp页面中引入标签库
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>


3、在html中静态使用演示:
<body>
		<pg:pager items="1001" export="currentPageNo = pageNumber">
			<pg:first>
				<a href="${pageUrl }" />首页</a>
			</pg:first>
			<pg:prev>
				<a href="${pageUrl }" />上页</a>
			</pg:prev>
			<pg:pages>
				<c:choose>
					<c:when test="${currentPageNo == 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>


4、在和struts结合动态的使用
最终效果:


每页显示的条数可以在下拉框中动态的指定
<!--url:是指要将这些分页数据提交到的action,如果不写这个url他会默认把当前页面作为转向地址,这是错误的  items:从dao层取回来的数据  export:进行了一个变量的赋值  maxPageItems:每页最多显示的条数,默认10 ,注意这个参数的取值要和服务器端的值保持一致,否则会出现一些莫名奇妙的错误-->
  <pg:pager url="org.action" items="${pm.total}" export="currentPageNo = pageNumber" maxPageItems="${pagesize}">
<!-- 当进入到机构的下一级子机构的时候分页要查询的是当前机构下所有的数据然后分页,所以要带着pid,他会自动把这个参数的值加入到url串中 -->
            	<pg:param name="pid"/>
            	<pg:param name="pagesize"/>
								<pg:first>
									<a href="${pageUrl }" />首页</a>
								</pg:first>
								<pg:prev>
									<a href="${pageUrl }" />上页</a>
								</pg:prev>
								<pg:pages>
									<c:choose>
										<c:when test="${currentPageNo 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>
								每页显示:
								<select id="pagesize" onchange="javascript:changeItem(this)">
									<option value="3">3</option>
									<option value="5">5</option>
									<option value="10">10</option>
									<option value="15">15</option>
									<option value="20">20</option>
								</select>
								条
							</pg:pager>


在下拉框中用一个onchange时间调用一个JavaScript函数吧用户当前选择的数据组装成一个url地址然后向后台发送一个请求,查询数据:
<script type="text/javascript">
	function changeItem(pagesize) {
		var i = document.getElementById("pagesize").value;
		window.location.href =  "org.action?pid=" + '<s:property value="pid" />' + "&pagesize=" + i;
	}
</script>



接下来我们定义一个拦截器把用户提交的pagesize这个属性设置到一个TheradLocal中然后再dao层取数据的时候从ThreadLocal中取出相应的数据进行分页就可以了(别忘了把我们自己定义的拦截器加入到struts.xml配置文件中):
public class PageModelInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation invoke) throws Exception {
		int offset = 0;
		try {
			offset = Integer.parseInt(ServletActionContext.getRequest()
					.getParameter("pager.offset"));
		} catch (NumberFormatException e) {
		}
	//默认为5
		int pageSize = 5;
		try {
			pageSize = Integer.parseInt(ServletActionContext.getRequest().getParameter("pagesize"));
		} catch (Exception e) {
		
		}
//在这个地方要把pagesize设置到request中,因为这个数据是设定<pg:pager>标签中maxPageItems值的依据,一定要保持一致。
		ServletActionContext.getRequest().setAttribute("pagesize", pageSize);
		PageModel pm = MyThreadLocal.getValue();
		pm.setOffset(offset<0 ? 0 : offset);
		pm.setPageSize(pageSize<0 ? Integer.MAX_VALUE : pageSize);
		MyThreadLocal.setValue(pm);
		try {
			return invoke.invoke();
		}finally {
			//注意等到整个拦截器执行完成即一个ThreadLocal完成它的工作后要清除里面的内容
			MyThreadLocal.remove();
		}
	}
}

//用javascript保证下拉列表中显示的值与当前用户的选择一致:这一句要放到后面等到下拉框加载完成之后才能起作用
<script type="text/javascript">
	var pagesize = document.getElementById("pagesize").options;
	for(var i=0; i<pagesize.length; i++) {
		if(pagesize[i].value == ${pagesize})
			pagesize[i].selected = true;
	}
</script>
  • 大小: 25.8 KB
3
0
分享到:
评论
1 楼 zhucezhen 2011-08-28  
问下楼主啊
怎么使用pagertaglib进行按条件的分页呢?
我做的分页是查询所有的分页。
现在我只 按照学生姓名查询 这个 查询出来的结果进行分页。
还有就是跳转到第几页几页 的这个 怎么实现呢?
谢谢了。~

相关推荐

    使用pager-taglib分页完整例子

    下面我们将详细探讨如何使用pager-taglib分页以及其主要特性。 首先,`pager-taglib`的核心在于其提供的自定义JSP标签,这些标签简化了分页界面的创建。例如,`&lt;pager:pagelist&gt;`用于显示分页链接,`&lt;pager:page&gt;`...

    Pager-taglib页面分页示例

    3. 设置分页参数,如总记录数、每页记录数、当前页码等。 4. 使用Pager-taglib的标签,如`&lt;pg:pager&gt;`,将这些参数传入并渲染分页链接。 **4. 示例代码** 在Servlet中,你可以通过注解来切换分页样式。例如,可以...

    pager-taglib分页标签

    - 使用分页标签:在JSP中,可以使用`&lt;pager:page&gt;`标签来显示分页链接,`&lt;pager:previous&gt;`和`&lt;pager:next&gt;`标签分别用于上一页和下一页的链接。 例如: ```jsp &lt;pager:page rowsPerPage="10" totalRows="${...

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

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

    pager-taglib 分页标签使用

    `pager-taglib`是Java Web开发中常用的分页标签库,它简化了在JSP页面上实现分页功能的过程。这个标签库通常与Spring MVC、Struts2等框架结合使用,提供了一种声明式的方式来展示数据分页。下面将详细解释`pager-...

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

    `pager-taglib`通过接收服务器端的数据总数和每页显示的数量,动态生成分页链接,用户点击不同页码时,发送请求获取对应页的数据。 2. **标签库的引入** 在JSP页面中,首先需要引入`pager-taglib`的TLD文件,通常...

    学习spirngmvc 和 使用 pager-taglib的一点小例子(包含 跳转页 及 每页显示数量控制)

    6. **每页显示数量的控制**:允许用户选择每页显示的数据量,这通常通过一个下拉框实现,选择后刷新页面,调整分页参数并重新加载数据。 通过这个小例子,你不仅能了解SpringMVC的基本工作流程,还能掌握如何在实际...

    pager-taglib分页jar包

    4. **属性和参数**:这些自定义标签通常接受各种属性,比如每页显示的记录数(`rowsPerPage`)、总记录数(`totalRows`)等,以便根据这些信息动态生成分页链接。 5. **配置和使用**:在使用`pager-taglib`之前,...

    pagerTaglib分页Demo

    在JSP页面中,你可以使用`&lt;pager:tag&gt;`标签来显示分页链接,如`&lt;pager:page&gt;`用于显示当前页,`&lt;pager:first&gt;`和`&lt;pager:last&gt;`用于显示首页和尾页的链接,`&lt;pager:prev&gt;`和`&lt;pager:next&gt;`则表示上一页和下一页。...

    jsp pager-taglib分页资料

    2. **使用分页标签**:`pager-taglib`提供了一些关键的标签,如`&lt; pager:table &gt;`、`&lt; pager:page &gt;`和`&lt; pager:nav &gt;`等。`&lt; pager:table &gt;`用于包裹整个表格,`&lt; pager:page &gt;`定义每一页的内容,`&lt; pager:nav &gt;`...

    pager-taglib 分页扩展实例

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

    pager taglib

    3. **设置属性**:在使用标签之前,需要设置一些必要的属性,如总记录数、每页记录数、当前页等。 4. **使用标签**:在JSP页面中插入Pager Taglib提供的标签,如`&lt;pager:page&gt;`,并根据需要使用其他辅助标签。 5. ...

    pager-taglib分页要点

    此标签接受多个属性,包括总记录数、当前页、每页显示条数等,从而生成动态的分页链接。 #### 四、最佳实践与注意事项 - **性能优化**:在处理大量数据时,应考虑使用索引、缓存策略以及合理的SQL查询优化,以减少...

    pager-taglib实现用户信息分页

    4. 使用PagerTaglib库:在JSP页面中,引入PagerTaglib库,并设置相关属性,如总记录数、每页记录数、当前页码等。例如: ```jsp &lt;%@ taglib prefix="pg" uri="http://pager.taglib.com/pager"%&gt; &lt;pg:pager total=...

    pager-taglib分页方法

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

    pager-taglib分页例子

    在这个例子中,`${totalItems}`是数据库中的总记录数,`${pageSize}`是每页显示的条目数,`${currentPage}`是当前页码,`urlPattern`则指定了生成分页链接的模式。 后台控制器(如Spring MVC的Controller)需要提供...

    pager-taglib-2.0及使用方法

    在`pager-taglib的安装和使用.txt`文件中,可能包含了更详细的使用示例和配置说明,建议参考该文件进行实践操作。 ### 结论 Pager Taglib 2.0是实现高效、灵活页面分页的利器。通过理解并熟练使用它的各种标签和...

    pager-taglib-2.0 JSP分页组件

    分页参数设置:**使用这个组件时,可能需要设置一些参数,如每页显示的记录数、当前页数、总页数等。这些参数可以通过标签属性传递给后台,然后由后台计算和处理。 **4. 自定义功能:**由于这是个组件,所以可能还...

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

    在Action类中,我们可以使用Hibernate的Session对象来执行SQL查询,例如`select * from users limit #{start}, #{count}`,其中#{start}是当前页第一条记录的索引,#{count}是每页的记录数。这样,我们就能获取到...

Global site tag (gtag.js) - Google Analytics