【问题标题】:DataTables server-side paginationDataTables 服务器端分页
【发布时间】:2018-08-16 16:04:55
【问题描述】:

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

【问题讨论】:

    标签: java spring datatables


    【解决方案1】:

    当你说Datatable 我假设你在谈论DataTables jQuery 插件。

    要激活服务器端分页,您需要通过

    "serverSide": true,
    

    像这样:

    $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "/your_url"
    });
    

    执行上述操作将激活您的服务器端分页。但是您也需要在服务器端进行一些更改。让我们一步一步来看看。

    1。当您将serverSide 标记为true 时会发生什么

    DataTables 插件将自定义参数添加到 AJAX 调用中,其中包含如下信息

    order:  asc
    start:  20
    length: 10
    
    // and many more.
    

    您可以检查此demo link 并在单击下一页按钮时查看 request 中传递的参数。

    2。同样,DataTables 插件需要一些字段作为响应,以保留 分页 逻辑。

    "draw": 3,             // unique ID
    "recordsTotal": 57,    // total number of records
    "recordsFiltered": 57  // total number of filtered records
    

    这次你可以检查this demo link并查看响应数据。

    3。现在更改在您的 API 中的服务器端

    您需要在控制器 API 的 POST 调用中将这些参数添加为 queryParam 以用于 GET 和 attr:

    order: asc
    start: 20
    length: 10
    

    4。服务层更改 - 数据库查询

    从数据库获取详细信息的服务层。

    如果是 MySQL,您需要获取记录总数并在搜索查询中传递一个 LIMIT 子句LIMIT 10, 10

    例如:

    SELECT * FROM User LIMIT 20,10;
    

    使用startlength 计算下一组记录。

    这可能比较棘手,但如果你理解并正确实施它会很有趣。

    阅读更多详细信息here,其中还包含代码和现场演示。

    【讨论】:

    • 非常感谢您的回答,但对我来说并非一切都清楚。你能告诉我如何获得有关开始和长度的信息吗?我可以在示例中看到仅更改抽奖编号,但是有关开始和长度的信息在哪里?对不起,如果问题是微不足道的......
    • 我使用了相同的示例,我可以在那里看到开始和长度信息。它在最后可用。我必须向下滚动到最后才能看到开始:10 长度:10 搜索 [值]:搜索 [正则表达式]:假
    【解决方案2】:

    请参阅有关 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")获取页码

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 2011-11-24
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多