我在一些使用 Struts2 框架的应用程序中工作,在操作中我加载了一些我们需要的所有数据
List<Object>
然后在 JSP 文件中,这个列表被迭代并使用引导框架显示在数据表中。
这很好用,但我知道如何在不在生成的 HTML 中加载完整数据的情况下执行此操作,就像我有 1.000.000(一百万)条记录一样。
我不希望所有记录都在 JSP 的结果 HTML 输出中,只有前 10 个记录,如果需要,则使用分页加载(使用 jQuery?)其余数据集。
添加到 Enrique San Martín 的评论中:http://legacy.datatables.net/usage/server-side
任何好的例子都应该使用
iDisplayStart
和iDisplayLength
参数,当然还有"bServerSide": true
的datatable()
属性。
这里是博客文章的链接:使用 Ajax 将 jQuery 数据表与 Struts2 操作类结合使用。
好吧,这是一个很好的方法,但我必须将 request.getParameter 转换为 struts 变量(声明为私有,然后生成 getter 和 setter):
来自:https://datatables.net/development/server-side/jsp
edit:此链接有一些 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 中查询数据库并返回数据集。
当我使用 struts2+datatables 进行完整分页时,我将编辑这个答案,
在数据表中有一些必要的配置(参见datatables.net的文档):
<script>
$(document).ready( function() {
$('#datatable').dataTable( {
"iDisplayLength": 5,
"processing": true,
"serverSide": true,
"ajax": "paginateTableAction"
} );
} );
</script>
最好的方法是在您的 DAO 中创建一个方法,该方法具有附加参数开始和结束,例如:
getCustomers( int start,int end){
// get all customers
// sublist the result and get the data from start index to end index
}
在您的控制器中,您将做几乎相同的事情,您将通过
start
或 end
请求提供 POST
和 GET
参数
@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 文件中有一部分客户记录,您可以决定如何显示此子列表结果。