【问题标题】:Break ArrayList and display in Struts 1打破 ArrayList 并在 Struts 1 中显示
【发布时间】:2023-03-12 20:13:01
【问题描述】:

我遇到了显示带有 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 并以50 个为一组发送到JSP 并在JSP 中显示或显示它们,这样渲染时不会很慢。

【问题讨论】:

    标签: java jsp controller struts struts-action


    【解决方案1】:

    不建议将 2750 条记录存储在 List 中。当您从 DB/storage 读取它以及在您的 web/app 服务器上传递它时,请考虑它的含义。此外,您可能不需要一次全部使用它们。

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

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

    【讨论】:

    • 我已经开始使用 jqGrid 和 jqueryUI 主题来实现目的。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Struts &lt;logic:iterate&gt; 标记具有offsetlength 属性,可用于显示集合的各个部分。下面将显示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>
      

      【讨论】:

      • 在这种情况下,您是否必须将所有 2750 条记录加载到内存中?
      • @guess_me 是的,您将让数据库向您发送 2750 条记录,您将这些记录转换为 2750 个对象,仅使用其中的 50 个。
      • 但这只会显示 50 行,我需要显示所有数据但一次渲染 50 行。
      • @Survivor-2012 这到底是什么意思?您是否尝试实现分页?
      【解决方案4】:

      您不应将列表customerlist 破坏为“以块的形式发送到jsp”。相反,您可以中断将返回给定数量记录的方法,即 customerManager.getCustomerForBeneficiaryWithCount(perPage); 或使用 JSP 逻辑标记使用两个参数 firstRowperPage 来限制呈现行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 2017-12-15
        • 1970-01-01
        相关资源
        最近更新 更多