datatables 带查询条件java服务端分页处理

最近做东西有一个需求,因为数据量很大,而实际上用户并不会对所有数据都感兴趣,如果用户直接翻页到最后一页的话,查询速度会很慢,影响用户体验,所以将分页控件处理成百度检索的效果,也就是用户不能直接点击到最后一页。


datatables 带查询条件java服务端分页处理_第1张图片

在这里我决定使用强大的datatables。datatables的“simple_numbers”的分页模式,比较接近需要的效果。

那么问题来了,因为数据量比较大,分页是需要在服务端进行的,同时还需要传递查询条件到服务端。怎样传递数据到后台呢?

先来看前台代码

 

















	
Name Position

 java代码如下,使用spring的 @ResponseBody将结果转换成json格式返回给前台

 

 

@RequestMapping(value="/datatablesTest", method=RequestMethod.GET)
	@ResponseBody
	public DatatablesViewPage datatablesTest(HttpServletRequest request){
//获取分页控件的信息
		String start = request.getParameter("start");
		System.out.println(start);
                String length = request.getParameter("length");
		System.out.println(length);
//获取前台额外传递过来的查询条件
		String extra_search = request.getParameter("extra_search");
		System.out.println(extra_search);
                //随便组织的查询结果
		List list  = new ArrayList();
		Alarm alarm = new Alarm();
		alarm.setLevel(1);
		alarm.setTotal(100L);
		list.add(alarm);
		alarm = new Alarm();
		alarm.setLevel(2);
		alarm.setTotal(100L);
		list.add(alarm);
		
		
		DatatablesViewPage view = new DatatablesViewPage();
		view.setiTotalDisplayRecords(100);
		view.setiTotalRecords(100);
		
		view.setAaData(list);
		return view;
	}

 

DatatablesViewPage的声明如下:

public class DatatablesViewPage {

	private List aaData; //aaData 与datatales 加载的“dataSrc"对应
	private int iTotalDisplayRecords; 
	private int iTotalRecords;
	public DatatablesViewPage() {
		
	}
//get set方法 此处省略

}

 处理完效果如下:



datatables 带查询条件java服务端分页处理_第2张图片
 
 此处稍微修改了jquery.dataTables.js的内容,使分页的效果成这样。

 

 

 

 

你可能感兴趣的:(datatables 带查询条件java服务端分页处理)