下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、pager-taglib是java中一个用于分页的小的框架。下面简单介绍一下它 的具体使用。一、环境的搭建:将 pager-taglib-2.0.war 包拷贝到 Tomcat 的 webapps 下。启动 Tomcat后会将其解压成pager-taglib-2.0文件夹。从解压文件中的lib目录下拷贝pager-taglib.jar包到项目的lib下。 在JSP页面中使用taglib指令引入pager-taglib标签库。二、重要参数的说明:Offset :传过来的值是偏移量,是选择的页面的页数。比如你的记录/页pageSize=3,那么传过来的offset应该如下处理:offset/3+1
2、 这 样得到的就是要生成的页数!pg:pager设置分页的总体参数url:分页的链接根地址,pager标签会在这个链接的基础上附加分 页参数,但不允许像给页面跳转的url那样,在后面直接添加参数,而 参数的传递时需要使用pg:param来指定。items:总记录数,pager标签正是根据这个值来计算分页参数,很 重要。maxPageltems:每页显示的行数,默认为 10maxindexPages:在循环输出页码的时候,最大输出多少个页码, 默认是10pg:first第一页的标签pg:pre 上一页标签pg:next 下一页标签pg:last最后一页标签pg:pages 循环输出页码信息对于上
3、面的标签都有类似的export变量:pageUrl -分页链接URL地址(最重要的export参数)pageNumber-页码firstItem 寸应页第一行的索引值lastitem -对应页最后一行的索引值三、项目中使用 pager-taglib :1、引入对应的标签库:html view pla in copy1.<span style ="font-size:18px"><%aglibprefix="pg" uri -'2.3.gs/navigation/pager"%>v% taglibprefix =&
4、quot;c" uri="%></span>2、使用标签布置页面:| html view pla in copy1. <pg:pager url ="org.do" items ="$pm.total" export ="currentPageNumber=pageNumber" >2.2. <pg:paramname pg:paramname ="parentId" />4.3. <pg:first>6.4. <ahref ahref
5、 ="$pageUrl">首页 </a>8.9.</pg:first>10.11.vpg:prev>12.13.vahref ahref ="$pageUrl ">前页 </a>14.15.</pg:prev>16.17.<pg:pages>18.19.<c:choose>20.21.<c:whentest c:whentest ="$currentPageNumber eq pageNumber " >22.23.vfontcolo
6、r fontcolor ="red" >$pageNumber </font>24.25.</c:when>26.27.<c:otherwise>28.29.vahref ahref ="$pageUrl ">$pageNumber </a>30.31.</c:otherwise>32.33.</c:choose>34.35.</pg:pages>36.37.<pg:next>38.39.vahref ahref ="$pageUrl &
7、quot;>后页 </a>40.41.</pg:next>42.43.vpg:last>44.45.vahref ahref ="$pageUrl ">尾页 v/a>46.47.v/pg:last>48.49.v/pg:pager>需要注意的是:很多时候,在不同的页面中跳转的时候, 需要传递一个id,在保持这个数据的时候,不能直接跟在url后面,需要使用<pg:paramname二"parentld"/> 来传递。为了给当前页添加一些特殊的效果,使用curre ntPageNumbe
8、r给pageNumber 指定了一个别名,这是为了 test="$currentPageNumber eq pageNumber 判断的需要。Items表示:返回来的总记录数,由此,该框架采用的是假分页。url :指明了请求的入口地址,是与struts的配置文件struts-config.xml中的配置相关联。3、设置offset禾口 pagesize 变量的值:比较好的做法是在系统变量类中,将其设置到ThreadLocal变量中这里将其圭寸装到了 SystemContext类中:java view pla in copy1.<span style= "font-si
9、ze:18px">publicclass SystemContext 2.3.privatestatic ThreadLocal offset =new ThreadLocal();4.5.privatestatic ThreadLocal pagesize =new ThreadLocal();6.7.8.publicstaticint getOffset()9.10.Integeros = (Integer)offset.get();11.12.if (os= null )13.14.return。;15.16.returnos;3.2
10、7.58.59.publicstaticvoid setOffset( int offsetvalue)offset.set(offsetvalue);publicstaticvoid removeOffset()offset.remove();publicstaticint getPagesize()Integerps = (lnteger)pagesize.get();if (ps= null
11、)returnlnteger.MAX_VALUE;returnps;publicstaticvoid setPagesize( int pagesizevalue)pagesize.set(pagesizevalue);publicstaticvoid removePagesize()pagesize.remove();v/span>4、定义分页过滤器PagerFilter :该过滤器调用 SystemContext类的方法,给offset和pagesize变量赋值java view pla in copy..5.16.17
12、.3.34.35.Filter <span style= "font-size:18px" >publicclass PagerFilterimplementsOverridepublicvoid destroy。Overridepublicvoid doFilter(ServletRequest request, ServletResponseresponse,FilterChain chain)throws IOException, ServletExceptionH
13、ttpServletRequest httpRequest = (HttpServletRequest)request;SystemContext.setOffset(getOffset(httpRequest);SystemContext.setPagesize(getPagesize(httpRequest);try chain.doFilter(request, response); finally /清空ThreadLocal 中的值SystemContext.removeOffset();SystemContext.removePagesize();9.40.41
14、.9.70.protectedint getOffset(HttpServletRequest request) int offset =0;try offset = lnteger.parselnt(request.getParameter( catch (NumberFormatException ignore) return offset;protectedint getPagesize(HttpServletRequest
15、request)return 10;Overridepublicvoid init(FilterConfig arg0)throwsv/span>"pager.offset" );ServletException offset = In teger.parsel nt(equest.getPaamete("page.offset");参数是固定的。中的..5.I..2.5、将过滤器配置到 web.xml文件中,使之生效:html view
16、pla in copyvfilter><filter-name> pagerFilter </filter-name></filter-class><filter-class> com.bjsxt.oa.web.PagerFilter</filter><filter-mapping><filter-name>pagerFilter </filter-name><url-pattern>/* </url-pattern></filter-mapping>6、定
17、义封装不同实体类数据的分页类PagerModel :该类使用List封装了返回的不同实体类型。这里如果使用泛型,可以在编程的时候检查类型及早给出提示,不使用也是可以的,根据个人的编程习惯吧。java view pla in copypublicclass PagerModel/* 总记录数*/ privateinttotal;9./*当前页结果集*/private List da
18、tas;public List getDatas() returndatas;publicvoid setDatas(List datas) this .datas = datas;publicint getTotal() returntotal;publicvoid setTotal(int total) this .total = total;7、抽象分页服务类AbstractMa nager在业务逻辑的实现类中,只是传入的查询语句和参数不同,所以,可以对这个变化的部分抽象。..1.22.2
19、8.39.40.java view pla in copypublicclass AbstractManagerextends HibernateDaoSupport /* 私有的给查询语句赋值的方法* param query* param hql* param params*/publicvoid setParams(Query query,String hql,Object params)if (params!= null && params.length>0)for (int
20、i = 0;i<paramsength;i+) query.setParameter(i, paramsi);/*分页公共方法开始*public PagerModel searchPaginated(String hql)return searchPaginated(hql, null ,SystemContext.getOffset(),SystemConte xt.getPagesize();return searchPaginated(hql, new Objectparam,SystemContext.getOffse t(),SystemContext.getPagesize(
21、);public PagerModel searchPaginated(String hql,Object params)return searchPaginated(hql,params,SystemContext.getOffset(),SystemCon text.getPagesize();public PagerModel searchPaginated(String hql,int offset, int pagesize)return searchPaginated(hql, null ,offset,pagesize);agesize)public PagerModel sea
22、rchPaginated(String hql,Object obj,int offset, int preturn searchPaginated(hql, new Objectobj,offset,pagesize);/*根据HQL语句进行分页查询param hql HQL 语句param params HQL 语句带的多个参数值param offset从第几条记录开始查询7
23、.1.param pagesize每页显示多少行82.83.84.* return*/85.public PagerModel searchPaginated(String hql,Object params,int offset,intpagesize)00022.123.124./获取记录总数String countH
24、ql = getCountQuery(hql);Query query = getSession().createQuery(countHql);if (params != null && paramsength >0)for (int i= 0; i<params.length; i+) query.setParameter(i, paramsi);int total = (Long)query.uniqueResult().intValue();/获取当前页的结果集query = getSession().createQuery(hql);if (params
25、!= null && paramsength >0)for (int i= 0; i<params.length; i+) query.setParameter(i, paramsi);query.setFirstResult(offset); query.setMaxResults(pagesize);67.168.List datas = query.list();PagerModel pm =new PagerModel();pm.setTotal(total);pm.setDatas(datas);return pm;/* 根据HQL语句,获得查找总记录数的HQL语句
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年继电保护员核心题库题库及答案
- 2025年人文医学定期考核题库及参考答案
- 2025年包装设计师招聘面试参考题库及答案
- 2025年人工智能数据分析师招聘面试题库及参考答案
- 2025年主席秘书招聘面试参考题库及答案
- 2025年空调安装工招聘面试题库及参考答案
- 2025年CRM顾问人员招聘面试题库及参考答案
- 高级消防培训题库及答案
- 中宁消防考试题库及答案
- 2025年全球业务拓展经理招聘面试题库及参考答案
- 2025河北秦皇岛市抚宁区为乡镇街道和区直单位选调全额事业人员68人笔试考试备考试题及答案解析
- 中小学英语衔接教学策略
- 015《煤矿安全规程》修改条款学习辅导:第十五讲 电气
- 水电站消防安全培训课件
- 2025年中石油考试题大全及答案
- 湖北省黄石市十四中2025年十月质量监测九年级语文试卷(含答案)
- 纯水储罐清洗施工方案
- 北京中医药大学《中医基础理论》期中考试试卷(含答案)
- 油库施工冬季施工方案
- 我国农业数字化技术发展现状与数字经济发展策略
- DB5133∕T 74-2023 甘孜藏餐 通 用规范
评论
0/150
提交评论