我有带有客户端分页的Spring REST应用程序,DataTables默认使用它,并且一切正常。现在,我需要将其更改为服务器端分页,但我有问题,因为不知道如何从DataTables中获取客户端想要查看的页码信息。在DT手册中找不到有用的东西。
答案 0 :(得分:3)
当您说Datatable
时,我假设您正在考虑jquery Datatable.
要激活服务器端分页,您需要通过
"serverSide": true,
喜欢
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "//yoururl"
});
执行上述操作将激活服务器端分页。但是您也需要在服务器端进行一些更改。
让我们逐步看到它们
1。将serverSide
标记为true
Datatable使用
之类的信息将自定义参数添加到Ajax调用中order: asc
start: 20
length: 10
and many more.
您可以检查此documentation link,并在单击下一页按钮时查看在请求中传递的参数
2。同样,Datatable希望响应某些字段以保留分页逻辑。
"draw":3, // unique Id
"recordsTotal":57, // Total no of Records
"recordsFiltered":57, // Total no of Records filter
您可以检查same link并查看响应数据
3。现在,更改已在您的API的服务器端上
you need to add these parameter as `queryParam` for GET and attr in POST call in your controller API
order: asc
start: 20
length: 10
4。服务层更改-数据库查询
在服务层中,您可以从数据库获取详细信息。
您需要获取记录总数,并且对于MySQl,搜索查询的通过限制为10,10。
eg:
Select * from User limit 20,10;
使用开始和长度来计算下一组记录
这可能会比较棘手,但是如果您正确理解和实现它的乐趣,那么
答案 1 :(得分:1)
请参阅有关DataTables服务器端处理的示例: https://datatables.net/examples/server_side/simple.html
更改页面后,您可以按照以下格式捕获到服务器的请求: https://.../server_processing.php? draw = 3 &columns ...& order = 0&dir = asc&start = 20&length = 10 &search%5Bvalue%5D =&search%5Bregex%5D = false&_ = 1534436781912
这意味着DataTable请求第3页(draw = 3),按第一列的升序顺序...。
在服务器端(REST),您可以通过例如request.getParameter(“ draw”)
获取页码。