Ext.GridPanel实现分页,java后台代码

最近在研究ExtJS,遇到了一个棘手的问题,就是GridPanel的分页问题,相信这个问题也是让很多初学者头疼的问题之一吧!对于这个问题,我在网上搜索了好久,看了好多帖子基本上都是写的前端extjs代码,而没有后台代码,我有点怀疑发帖的这些人是不是真的会这项技术,如果真的会的话他们应该知道只是贴一个前端代码出来又有什么用???前端代码随处可得,而真正缺少的是后台代码的实现,可惜的是搜索了半天也没有找到一个帖子能够有效地解决问题!浪费了不少时间,最后还是以自己的办法解决了这个苦恼已久的问题,所以发帖出来给需要的人,免得跟我一样再走很多弯路。好了,废话不说,以下是java后台代码的实现。

 

private List allList=null;

 

public ActionForward getAllUser(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response

){

setEncodingUtf8(response);

try {

int start=Integer.parseInt(request.getParameter("start"));

int limit=Integer.parseInt(request.getParameter("limit"));

JSONObject json = new JSONObject();

if(this.allList==null){

this.allList=userBO.getAllUser(); //调用逻辑层获取数据

}

int total=allList.size();

List pageList=getPagingData(start, limit, allList); 

json.put("total", total);

json.put("success", true);

JSONArray arr = JSONArray.fromObject(pageList);

json.put("root", arr);

 

response.getWriter().print(json);

return null;

} catch (Exception e) {

return mapping.findForward("error");

}

return null;

}

 

//我的解决方法是既不用内存代理也不用分页时每次查询数据库,只需要第一次查询时取出数据库中的全部数据

//以后分页显示时只是在内存中取数据,这样第一次查询时速度可能慢,以后分页查询很快

//个人认为这种方法方便简单

public List getPagingData(int start,int limit,List list){

List tempList=new ArrayList();

for(int i=start;i<start+limit;i++){

tempList.add(list.get(i));

}

return tempList;

}

 

 

由于extjs前端分页代码网上很多,这里就不列出来了,以上就是我的解决方法,有什么不理解的欢迎留言,有更好的建议欢迎指教。

你可能感兴趣的:(java,json,ext)