DataTables服务器端分页

时间:2018-08-16 16:04:56

标签: java spring datatables

我有带有客户端分页的Spring REST应用程序,DataTables默认使用它,并且一切正常。现在,我需要将其更改为服务器端分页,但我有问题,因为不知道如何从DataTables中获取客户端想要查看的页码信息。在DT手册中找不到有用的东西。

2 个答案:

答案 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”)

获取页码。