打破 ArrayList 并在 Struts 1 中显示

问题描述 投票:0回答:4

我遇到了显示 2750 行的

ArrayList
的问题。斯特拉 显示行的 uts 代码是:

<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
并将它们以 50 个块的形式发送到 JSP 并显示,或者在 JSP 中显示它们,这样渲染时不会很慢。

java jsp controller struts struts-action
4个回答
2
投票

不建议在List中存储 2750 条记录。当您从数据库/存储读取它以及在 Web/应用服务器上传递它时,请考虑它的含义。此外,您可能不需要一次性使用所有这些。

请考虑一次以 100 个等块的形式获取和显示数据。您始终可以通过传递索引对服务器进行新的调用以获取下一组记录。

如果您不使用 still,则必须使用 Ajax;这样您就可以继续将剩余数据附加到页面而无需刷新。


0
投票

我建议使用分页机制,以便您在给定时间加载 50 或 100 条记录。看看这个extremetable


0
投票

Struts <logic:iterate>

 标签具有 offset
length
 属性,可用于显示集合的各个部分。下面将显示 
ArrayList
 中的前 50 个元素。

<logic:iterate name="customerlist" id="customer" indexId="customerNum" offset="0" length="50"> <tr id="${customer.customerId}"> <td>${customer.fullName}</td> ... </tr> </logic:iterate>
    

0
投票
您不应该破坏列表

customerlist

来“分块发送到jsp”。相反,您可以破坏将返回给定数量记录的方法,即 
customerManager.getCustomerForBeneficiaryWithCount(perPage);
 或使用 JSP 逻辑标记使用两个参数 
firstRow
perPage
 来限制渲染行。

© www.soinside.com 2019 - 2024. All rights reserved.