ここでの一般的な質問です。ユーザーがデータベース内の多数のレコードをフィルタリングできるようにするシンプルなWebアプリがあります。現在、これは特に大きなリストではありません(現時点では1,200〜1,500)
しかし、私はエラーのない散発的な問題を抱えているようで、誰かが似たようなものを持っているのではないかと思っていました。
基本的に、返されたリストは期待される数の結果(例1,267)を返しますが、すべての結果が表示されない場合があります。検索を実行して1,267個すべてを取得する場合もあれば、ページが74または123などで「ストール」しているように見える場合もあります。もう一度検索を押すと同じことが起こる可能性があります。もう一度押すと、今回は機能します(1,267個すべてが返されます)。その後、次の2〜3回は機能し、その後、たとえば73件の結果のみを表示するように戻ります。
これで、Javaの観点からはリストが正しいので、これはStrutsタグ(特に<s:iterator>
)の問題である必要があります。
他の誰かがこれを経験したことがあるかどうか、そしてそれを回避する方法を考えていました。
また、これに注意すると、結果は非常にゆっくりと読み込まれるように見えます。ほぼ10のブロックのように、2秒の遅延、さらに10の遅延があるため、1,267は約1分かかると想像できます。これは非常に間違っているようです。
ご覧のとおり、イテレータには特別なことは何もありません。
<s:iterator value="resultList" var="obj" status="row">
<tr>
<td>[<s:property value="%{#row.count}"/>]</td>
<td noWrap="true"align="center"><input type="checkbox" name="allocateChkBox" value="<s:property value="#obj.id"/>" /></td>
<td noWrap="true"><s:property value="#obj.reference"/></td>
<td noWrap="true"><s:property value="#obj.status"/></td>
<td noWrap="true"><s:property value="#obj.resource"/></td>
<td noWrap="true"><s:property value="#obj.society"/></td>
<td noWrap="true" align="center"><s:property value="#obj.date"/></td>
<td noWrap="true" align="center"><s:textfield size="11" name="quantity" value="%{#obj.quantity}"/></td>
<td noWrap="true"><s:property value="#obj.embellisher"/></td>
<td noWrap="true" align="center"><s:textfield maxLength="5" size="2" name="boxNumber" value="%{#obj.boxNumber}" /></td>
<td noWrap="true" align="center"><s:textfield size="11" name="trackingNumber" value="%{#obj.trackingNumber}"/></td>
</tr>
</s:iterator>