1

当前问题:我们目前正试图从数据库中获取超过 500k(五十万)条记录,然后我必须在 JSP 上每页显示 50 条记录(使用 struts 2)。问题是加载需要很长时间,甚至需要一些时间。一旦加载,我们就可以顺利导航。

需要的解决方案:喜欢根据分页定义的记录加载有限的记录,例如:每页最多 100 条记录。有没有人在 struts 或类似框架中实现了类似的功能?我也不想一次获得所有记录。请指导我如何实施?

4

2 回答 2

0

您可以使用 jquery 数据表。它具有用于 ajax 加载的分页功能。因此,当您单击下一页时,它会从数据库中加载下一条记录。为此,您需要添加 Jquery 库,如jquery.dataTables.min.js, jquery-ui-1.8.10.custom.min.js , jquery-1.4.4.min.js, jquery-1.4.2.min.js,jquery-ui-1.8.10.custom.css

JSP代码

<table id="reqAllQueriesTable" cellpadding="0" cellspacing="0" border="0" class="display" style="width: 100%;">
    <thead>
    <tr>
    <th style="display: none"></th>
    <th>&nbsp;</th>
    <th><spring:message code='Name'/></th>
    <th><spring:message code='runDate'/></th>
    th><spring:message code='noOfRec'/></th>
    </tr>
    </thead>
    <tbody>
    </tbody>
</table>

JavaScript

var oTable = $('#reqAllQueriesTable')
                .dataTable(
                        {
                            "bProcessing": true,
                            "bServerSide": true,
                            "sAjaxSource": "query/getQuery",
                            "bPaginate" : true,
                            "bScrollCollapse" : true,
                            "iDisplayLength" : 10,
                            "bFilter" : true,
                            "bJQueryUI" : true,
                            "sPaginationType" : "full_numbers",
                            "oLanguage" : {
                                "sLengthMenu" : "Display _MENU_ records per page",
                                "sZeroRecords" : "No  Queries found",
                                "sInfo" : "Showing _START_ to _END_ of _TOTAL_ records",
                                "sInfoEmpty" : "Showing 0 to 0 of 0 records",
                                "sInfoFiltered" : "(filtered from _MAX_ total records)"
                            },
                            "aaSorting" : [ [ 3, "desc" ] ],
                            "aoColumns" : [/*Id*/{
                                "bSearchable" : false,
                                "bVisible" : false
                            },
                            /*Id RadioButton*/{
                                "bSearchable" : false,
                                "bSortable" : false
                            },
                            /*Name*/null,
                            /*Run Date*/{
                                "sType" : "date"
                            },                          
                            {
                                "fnRender" : function(oObj) {

                                return '<input type="radio"  name="Id" value= "' + oObj.aData[0] + " "/>';
                                },
                                "aTargets" : [ 1 ]
                            }]
                        });
于 2012-05-30T06:20:26.240 回答
0

您可以根据某个参数在每个请求中仅获取 100 条记录。一次获取所有记录需要很长时间。我已经使用查询和一些参数实现了分页。

于 2012-04-25T12:10:51.543 回答