我遇到了显示包含2750行的ArrayList的问题。显示行的struts代码为:

<c:forEach items="${customerlist}" var="beneficiaryListval"varStatus="ForIndex" >
<tr id="<c:out value="${beneficiaryListval.customerId}" />">
  <td><c:out value="${beneficiaryListval.fullName}" /></td>
    <td><c:out value="${beneficiaryListval.mobileNo}" /></td>
<td><c:out value="${beneficiaryListval.passportNo}" /></td>
    <td><c:out value="${beneficiaryListval.beneficiaryCount}" /></td>
</tr>
<%rowID++;%>
</c:forEach>

操作方法是:
public ActionForward load(ActionMapping actionMapping,ActionForm     actionForm,HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse) {
try {
mtmrsLogger.entering("BeneficiaryAction", "load");
BeneficiaryForm beneficiaryForm = (BeneficiaryForm) actionForm;
ArrayList customerlist = customerManager.getCustomerForBeneficiaryWithCount();
httpServletRequest.setAttribute("customerlist", customerlist);
beneficiaryForm.setPageStatus("CustomerGrid");
return actionMapping.findForward(Constants.getInstance().SUCCESS);
}

现在,我需要破坏ArrayList customerlist并以五十个块的形式发送给JSP并显示或在JSP中显示它们,以便在渲染时不会很慢。

最佳答案

不建议将2750条记录存储在列表中。从数据库/存储读取数据时,以及在Web /应用程序服务器上传递数据时,请考虑其含义。同样,您可能一口气都不需要它们。

请考虑一次获取并显示大块数据(例如100)。您始终可以通过传递索引来对服务器进行新的调用以获取下一组记录。

另外,如果您不使用still,那么您将不得不使用Ajax。通过这种方式,您可以将其余数据继续添加到页面,而无需刷新。

07-24 09:49
查看更多