使用pager taglib进行分页(下拉框动态指定每页显示的条数)
1、把pager-taglib.jar拷贝到项目的lib目录下
2、在要使用的jsp页面中引入标签库
3、在html中静态使用演示:
4、在和struts结合动态的使用
最终效果:
每页显示的条数可以在下拉框中动态的指定
在下拉框中用一个onchange时间调用一个JavaScript函数吧用户当前选择的数据组装成一个url地址然后向后台发送一个请求,查询数据:
接下来我们定义一个拦截器把用户提交的pagesize这个属性设置到一个TheradLocal中然后再dao层取数据的时候从ThreadLocal中取出相应的数据进行分页就可以了(别忘了把我们自己定义的拦截器加入到struts.xml配置文件中):public class PageModelInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invoke) throws Exception {int offset = 0;try {offset = Integer.parseInt(ServletActionContext.getRequest().getParameter("pager.offset"));} catch (NumberFormatException e) {}//默认为5int 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>1 楼 zhucezhen 2011-08-28 问下楼主啊
怎么使用pagertaglib进行按条件的分页呢?
我做的分页是查询所有的分页。
现在我只 按照学生姓名查询 这个 查询出来的结果进行分页。
还有就是跳转到第几页几页 的这个 怎么实现呢?
谢谢了。~