java分页
2015-11-11 21:32
411 查看
先给出后台代码
package com.mcjj.util; import java.lang.reflect.Method; import java.util.List; public class Page<T> extends GenericTypeUtil<T>{ private int currentPage = 0; //当前页 private int totalPages = 1 ; //总页数 private long totalRecords = 0; //总记录数 private int pageSize = 5; //每页显示的记录数 private List<T> pageResult; //一个页面包含的所有结果 private Class<?> serviceCls; //泛型类型所对应的 service类类型 private Object serviceObj; //泛型类型所对应的service实例对象 public Page() { try{ String clsName = new EntityUtil<T>(super.getGenericType()).getEntityName(); String serviceClsName = "com.mcjj.service.impl." + clsName.substring(clsName.lastIndexOf(".") + 1) + "Service"; this.serviceCls = Class.forName(serviceClsName); //我们的目标是调用T类型的Service类中的方法 this.serviceObj = serviceCls.newInstance(); String[] args = null; init(args); //实例化:在我们创建一个页的时候应当初始化记录总数,总页数等内容。 }catch(Exception e) { e.printStackTrace(); } } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getTotalPages() { return totalPages; } public long getTotalRecords() { return totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize, String... args) { this.pageSize = pageSize; init(args); //当改变了pageSize之后,totalPage等也会随之改变,必须重新初始化 } public List<T> getPageResult() { return this.pageResult; } //获取一个页面的内容。 //通过反射,调用泛型类的services类中对应的方法,获取相应的记录 @SuppressWarnings("unchecked") public List<T> getOnePage(String... args) { init(args); try { Method method = null; if(args == null) { method = this.serviceCls.getMethod("getRecords", new Class[]{int.class, int.class}); this.pageResult = (List<T>)method.invoke(serviceObj, (currentPage - 1) * pageSize, pageSize); } else { method = this.serviceCls.getMethod("getRecords", new Class[]{String.class, String.class, int.class, int.class}); this.pageResult = (List<T>)method.invoke(serviceObj, args[0], args[1], (currentPage - 1) * pageSize, pageSize); } } catch (Exception e) { e.printStackTrace(); } return this.pageResult; } //初始化totalRecords 和 totalPages private void init(String... args) { try { Method method = null; if(args == null) { method = serviceCls.getMethod("getCountOfRecords"); this.totalRecords = (Long) method.invoke(serviceObj); } else { method = serviceCls.getMethod("getCountOfRecords", new Class[]{String.class, String.class}); this.totalRecords = (Long) method.invoke(serviceObj, args[0], args[1]); //获得总记录数。 } this.totalPages = (int) (this.totalRecords / this.pageSize); if(totalRecords % pageSize != 0 || totalRecords == 0) //记录数不整除或者为0 的时候需要加1 { ++ totalPages; } } catch (Exception e){ e.printStackTrace(); } } }
前台代码:
<table align="center" cellpadding="0" cellspacing="0" class="page_btn"> <tr> <td> <s:if test="#request.page.currentPage == 1"> <a href="javascript:void(0)">上一页</a> </s:if> <s:else> <a href='<s:url action="TeachersAction" > <s:param name="operateType" value="0"></s:param> <s:param name="checkType" value="#request.checkType" ></s:param> <s:param name="currentPage" value="#request.page.currentPage"></s:param> </s:url>'>上一页</a> </s:else> </td> <s:bean name="org.apache.struts2.util.Counter" id="counter"> <s:param name="first" value="0" /> <s:param name="last" value="#request.page.totalPages - 1" /> <s:iterator> <td> <s:if test="#counter.current == #request.page.currentPage"> <a href="javascript:void(0)" style="background:#01c7d7; color:#fff;" > <s:property value="#counter.current"/> </a> </s:if> <s:else> <a href='<s:url action ="TeachersAction" > <s:param name="checkType" value="#request.checkType"></s:param> <s:param name="currentPage" value="#counter.current"></s:param> </s:url>' > <s:property value="#counter.current"/> </a> </s:else> </td> </s:iterator> </s:bean> <td> <s:if test="#request.page.currentPage >= #request.page.totalPages"> <a href="javascript:void(0)">下一页</a> </s:if> <s:else> <a href='<s:url action ="TeachersAction"> <s:param name="operateType" value="1"></s:param> <s:param name="checkType" value="#request.checkType"></s:param> <s:param name="currentPage" value="#request.page.currentPage"></s:param> </s:url>'>下一页</a> </s:else> </td> </tr> </table>
效果图
相关文章推荐
- Java基础学习26(异常处理一)
- 两个栈实现一个队列以及两个队列实现一个栈(Java)
- 自定义spring schema简化与canal集成
- MYeclipse和eclipse常用快捷键
- JAVA项目出现红色感叹号如何解决
- spring自定义标签
- Java打印三角形
- java学习--IO(2)
- 1.0.2 eclipse中Ctrl点击某个类提示Class File Editor Source not foun
- 1.0.1 javadoc生成文档时总是报错java.lang.IllegalArgumentException解决方法
- 1.0.0 JAVAC 不是内部或外部命令解决方法
- Java 集合
- RxJava 入门
- spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x
- eclipse快捷键
- 基础排序算法Java版本(上)
- java中用一个MyNumber类充当“生产者—消费者”模式的缓冲池实例
- 【Java】List的subList方法
- java学习-----IO
- java知识系列之读写cookie