【问题标题】:Struts2 + Bootstrap datatable: how to paginate without load all dataStruts2 + Bootstrap 数据表:如何在不加载所有数据的情况下进行分页
【发布时间】:2016-07-27 00:59:30
【问题描述】:

我正在使用 Struts2 框架的一些应用程序中工作,并且在操作中,我将我们需要的所有数据加载到一些 List<Object> 中,然后在 JSP 文件中,这个列表被迭代并使用引导框架显示在数据表中。

这很好用,但我知道如何在不加载生成的 HTML 中的完整数据的情况下执行此操作,就像我有 1.000.000(一百万)条记录一样。

我不希望所有记录都在 JSP 生成的 HTML 输出中,只有第 10 条记录,如果需要的话,需要分页加载(使用 jQuery?)数据集的其余部分。

【问题讨论】:

标签: jquery jsp datatable struts2 pagination


【解决方案1】:

最好的方法是在你的 DAO 中创建一个方法,例如:

getCustomers( int start,int end){
// get all customers
// sublist the result and get the data from start index to end index
}

在您的控制器中,您将执行几乎相同的操作,您将通过 POSTGET 请求提供 startend 参数

@RequestMapping(value = "/sublistedCustomers", method = RequestMethod.GET)
public String getSublistedCustomers(@RequestParam("start") final int start,@RequestParam("end") final int end){
 model.addAttribute("cutomersResult",yourDAO.getCustomers(start,end));
}

现在您的 JSP 文件中有一部分客户记录,由您决定如何显示此子列表结果。

【讨论】:

  • 这段代码不适用于Struts2,也不能解决问题。
  • 注释技巧可以通过使用 ActionSupport 类扩展操作并使用preparedStatement 进行查询来完成(SwArq 所说的所有事项,因此可以从您的代码中复制它,谢谢我给你投票:)
【解决方案2】:

嗯,这是一个很好的方法,但我必须将 request.getParameter 转换为 struts 变量(声明为私有然后生成 getter y setter):

发件人:https://datatables.net/development/server-side/jsp

编辑:这个链接有一些 request.gP 来自数据表的旧值,而不是我们必须使用来自的参数:

https://datatables.net/manual/server-side#Sent-parameters

就像在一个动作中:

private String draw;

private String length;

private String order;

private String search;

private String start;

getters&setters{} //or make it public

然后在ajax调用的actionMethod中查询db并返回数据集。

当我使用 struts2+datatables 进行完整分页时,我将编辑此答案,

在数据表中有一些必要的配置(请参阅 datatables.net 中的文档):

<script>
$(document).ready( function() {
    $('#datatable').dataTable( {
      "iDisplayLength": 5,
      "processing": true,
      "serverSide": true,
      "ajax": "paginateTableAction"
    } );
  } );
</script>

【讨论】:

【解决方案3】:

要添加到 Enrique San Martín 的评论中:http://legacy.datatables.net/usage/server-side

任何好的例子都应该使用iDisplayStartiDisplayLength 参数,当然还有datatable()"bServerSide": true 属性。

这里是博客文章的链接:Using jQuery Datatable with Struts2 action class using Ajax

【讨论】:

  • 这是一个好的开始,谢谢,为此以及对我的问题的版本的帮助,我投票赞成你的答案,唯一的问题是引导程序使用新版本的数据表(不是旧版),所以 i*Start 字符串不再传递,请参阅我对参数名称的回答,但显然更不稳定:),无论如何感谢您的时间来帮助我解决这个问题 :)
  • 我相信您将能够为新版本调整代码。
  • 是的,它的工作、过滤和排序是另一个主题,但想法相同:)
猜你喜欢
  • 2018-05-23
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 2017-06-27
  • 2012-02-05
  • 1970-01-01
  • 2021-08-21
  • 2016-12-26
相关资源
最近更新 更多