上一篇文章简单的讲了我在项目中jqgrid前端分页的一些内容,这篇就从后端来看一下如何分页
项目中struts2+spring+hibernate3
<span style="font-size:18px;">package com.ibm.pims.framework.server.support;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import com.ibm.pims.framework.server.metadata.Page;
import com.ibm.pims.framework.server.struts.AjaxResult;
import com.ibm.pims.framework.server.struts.AjaxResult.ErrorType;
public class JqGridBaseAction<T> extends BaseAction {
private static final long serialVersionUID = 2114802374736799234L;
private boolean search;
private int rows; //记录数
private int page;//当前页
private int rowNum;//每页显示行数
private String nd;
private String sidx;
private String sord;
private Map<String, String> searchFields = new HashMap<String, String>(0);
private Map<String, String[]> searchArrays = new HashMap<String, String[]>(0);
public void populateJqGridData() {
@SuppressWarnings("rawtypes")
Map parameters = ServletActionContext.getRequest().getParameterMap();
@SuppressWarnings("unchecked")
Set<String> keys = parameters.keySet();
for (String key : keys) {
String[] values = (String[]) parameters.get(key);
if ("sidx".equals(key)) {
if ((null != values) && (values.length > 0))
this.sidx = values[0];
} else if ("sord".equals(key)) {
if ((null != values) && (values.length > 0))
this.sord = values[0];
} else if ("_search".equals(key)) {
if ((null != values) && (values.length > 0))
this.search = Boolean.parseBoolean(values[0]);
} else if ("rows".equals(key)) {
if ((null != values) && (values.length > 0))
this.rows = Integer.parseInt(values[0]);
} else if ("page".equals(key)) {
if ((null != values) && (values.length > 0))
this.page = (Integer.parseInt(values[0]) - 1);
} else if ("nd".equals(key)) {
if ((null != values) && (values.length > 0))
this.nd = values[0];
} else if ("rowNum".equals(key)) {
if ((null != values) && (values.length > 0)) {
this.rowNum = Integer.parseInt(values[0]);
pageSize = this.rowNum;
}
} else if (key.endsWith("Array")) {
this.searchArrays.put(key, values);
} else {
if (key.equals("pageCache")) {
continue;
}
if ((null != values) && (values.length > 0))
this.searchFields.put(key, values[0]);
}
}
}
public Map<String, String[]> getSearchArrays() {
return this.searchArrays;
}
public void setSearchArrays(Map<String, String[]> searchArrays) {
this.searchArrays = searchArrays;
}
public boolean isSearch() {
return this.search;
}
public void setSearch(boolean search) {
this.search = search;
}
public int getRows() {
return this.rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getPage() {
return this.page;
}
public void setPage(int page) {
this.page = page;
}
public String getNd() {
return this.nd;
}
public void setNd(String nd) {
this.nd = nd;
}
public String getSidx() {
return this.sidx;
}
public void setSidx(String sidx) {
this.sidx = sidx;
}
public String getSord() {
return this.sord;
}
public void setSord(String sord) {
this.sord = sord;
}
public int getRowNum() {
return this.rowNum;
}
public void setRowNum(int rowNum) {
this.rowNum = rowNum;
}
public Map<String, String> getSearchFields() {
return this.searchFields;
}
public void setSearchFields(Map<String, String> searchFields) {
this.searchFields = searchFields;
}
}</span>
在相应的Action继承jqgridbaseAction使用分页的时候就可以把分页信息通过getPageSize和getPage()带到DAO层了
其中的成员变量对应着jqGrid的prmNames和jsonReader中的设置。
成员变量 | 对应 prmNames | 对应 jsonReader | 注释 |
rows | rows | - | 每页中现实的记录行数 |
search | search | - | 是否是用于查询的请求 |
sidx | sort | - | 用于排序的列名 |
sord | order | - | 排序的方式 |
page | page | page | 当前页码 |
gridModel | - | root | 用于得到实际数据的数组名称 |
total | - | total | 总页数 |
record | - | records | 总记录数 |
昨天jqgird的分页点击next怎么也没有效果,查阅n多资料都不行后来clean project ,重启项目清除IE缓存发现分页居然可以了,很郁闷。。。。