jQuery datatables使用 ( 封装类实现前台分页 二 续...)

封装的公用分页的工具类:
package com.sintai.util;

import java.util.ArrayList;
import java.util.List;

public class PageUtil {
// 分页静态不变属性
public static final String SIZE = "size"; //每页显示的记录数
public static final String CURPAGE = "curPage"; //总页数

private long total;
private List data = new ArrayList();

//省略set get 方法

@Override
public String toString() {
return "PageUtil [data=" + data + ", total=" + total + "]";
}
}


后台Action:
/**
* 分页时每页跨度数量
*/
private String parm_iDisplayStart;
/**
* DataTable请求服务器端次数
*/
private String parm_sEcho;
/**
* 数组的数组,表格中的实际数据.
*/
private String[][] aaData;
/**
* 给前台的数据
*/
private DataTableReturnObject tableReturnObject = null;
/**
* 传参
*/
private String parm_name;

// 省略了get set 方法

@Action("/findAllSite")
public String findAllSite(){
List siteListPage=null;
int totle = 0;
try {
Map params = new HashMap();
int ri = Integer.parseInt(parm_iDisplayStart);
int cup = (int) (ri / 10) + 1;
params.put(PageUtil.CURPAGE, cup);
params.put(PageUtil.SIZE, 10);
PageUtil pageUtil = siteManagementManager.queryByPager(params, parm_name);
siteListPage = pageUtil.getData();
totle = (int) pageUtil.getTotal();
} catch (Exception e) {
e.printStackTrace();
return "updateUserERROR";
}

// resultArr数组封装了页面要显示的数据以及页面显示数据的各种格式
String[][] resultArr = new String[siteListPage.size()][];

for (int i = 0; i < resultArr.length; i++) {
String[] resultOne = new String[4];
SiteManagement site = siteListPage.get(i);
int oID = site.getSiteManagementID();
resultOne[0] = "";
resultOne[1] = site.getSiteName();
resultOne[2] =site.getSiteTel() ;
resultOne[3] =site.getSiteFax();
resultArr[i] = resultOne;
}
aaData = resultArr;
tableReturnObject = new DataTableReturnObject(totle, totle, parm_sEcho, aaData);

return "ajax";
}

前台分页显示页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>




机构设置






<%@ include file="../taglibs.jsp" %>


[color=red][/color]
[color=red]



[/color]




机构管理


[color=red][/color]





[color=red]
[/color]


[color=red] [/color]



机构名称 电话号码 传真




[color=red][/color]

[b][color=red]完善:

DataTableReturnObject 对象具体封装的是需要返回的数据,封装的具体属性如下[/color][/b]public class DataTableReturnObject {

private long iTotalRecords;
private long iTotalDisplayRecords;
private String sEcho;
private String[][] aaData;

public DataTableReturnObject(long totalRecords, long totalDisplayRecords,
String echo, String[][] d) {
this.iTotalRecords = totalRecords;
this.iTotalDisplayRecords = totalDisplayRecords;
this.sEcho = echo;
this.aaData = d;
}

public long getiTotalRecords() {
return iTotalRecords;
}

public void setiTotalRecords(long iTotalRecords) {
this.iTotalRecords = iTotalRecords;
}

public long getiTotalDisplayRecords() {
return iTotalDisplayRecords;
}

public void setiTotalDisplayRecords(long iTotalDisplayRecords) {
this.iTotalDisplayRecords = iTotalDisplayRecords;
}

public String getsEcho() {
return sEcho;
}

public void setsEcho(String sEcho) {
this.sEcho = sEcho;
}

public String[][] getAaData() {
return aaData;
}

public void setAaData(String[][] aaData) {
this.aaData = aaData;
}

}

[color=red][b]Jquery的dataTables分页:[/b][/color]
实现的是页面分页,在后台查询每页现实的记录,直接在页面上显示当前页的信息,所以把分页方法封装成了PageUtil类,重复使用;页面要显示的数据以及页面显示数据的输出格式甚至是添加的onclick事件等都是在后台设置完成的,页面上只需要写空的标签体自动载入后台传过来的将要显示的数据;
[color=red][b]注:[/b][/color]
Jquery的dataTables分页有自动的分页标签和页面样式,只需要引入就ok需要注意的是table标签的id值还有和标签,此案例是按页数查,显示到前台页面上的值是在后台action里查出来本页之后的list,action里查出来的是当前页要显示的那部分数据

你可能感兴趣的:(AJax,JavaScript,JQuery)