3

ArrayList2750 行の を表示する際に問題が発生しました。行を表示する 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 に表示する必要があります。

4

4 に答える 4

2

リストに 2750 レコードを格納することは、推奨される方法ではありません。DB/ストレージから読み取るとき、および Web/アプリ サーバーで渡すときは、その意味を考慮してください。また、一度にすべてを必要としない場合もあります。

一度に 100 のようなチャンクでデータを取得して表示することを検討してください。インデックスを渡すことで、いつでもサーバーに新しい呼び出しを行い、次のレコードのセットを取得できます。

また、まだ使用していない場合は Ajax を使用する必要があります。このようにして、更新せずに残りのデータをページに追加し続けることができます。

于 2013-02-07T09:53:43.030 に答える
0

一度に 50 または 100 のレコードをロードできるように、ページネーション メカニズムを使用することをお勧めします。このエクストリームテーブルを見てください

于 2013-02-07T09:50:06.223 に答える
0

Struts<logic:iterate>タグには、コレクションのセクションを表示するために使用できる属性がoffsetあります。length以下は、 の最初の 50 要素を表示しますArrayList

<logic:iterate name="customerlist" id="customer" indexId="customerNum" offset="0" length="50">
    <tr id="${customer.customerId}">
        <td>${customer.fullName}</td>
        ...
    </tr>
</logic:iterate>
于 2013-02-07T09:50:21.763 に答える
0

customerlist 「チャンクでjspに送信する」ためにリストを壊すべきではありません。代わりに、指定された数のレコードを返すメソッドを中断できます。つまりcustomerManager.getCustomerForBeneficiaryWithCount(perPage);、JSP ロジック タグを使用して、2 つのパラメータfirstRowとを使用して行のレンダリングを制限できますperPage

于 2013-02-07T10:17:56.813 に答える