JSP<%...%>
本体のスクリプトレットは、多くの場合、乱雑です。これらは、 ELでJSTL @taglib
を使用することで完全に回避できます。これは、JSPでクエリ結果を反復するためのクリーンで強く推奨される方法です。 ${...}
jstl-api.jarとjstl-impl.jarをダウンロードし、libフォルダーに入れて、ページの上部に追加します。
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
クエリ部分については、すべての処理をJavaクラスに任せ、クエリ結果myList
をタイプの変数に格納しList
、それをページに送信(get / post forward)します。これにより、値のみが表示され、他には何も表示されません。
<c:forEach items="${myList}" var="product" varStatus="status">
Product number ${status.count}: ${product}<br />
</c:forEach>
これは、ページでの予期しない動作を回避するのに十分なはずです。行がない場合は、何もしません。ただし、それでも確認したい場合は、結果がすでに内部にあるため、クエリを再度実行する必要はありませんmyList
。
<c:if test="${fn:length(myList) != 0}">
<c:forEach items="${myList}" var="product" varStatus="status">
Product number ${status.count}: ${product}<br />
</c:forEach>
</c:if>
または、それが本当にあなたの状態である場合は、の${noCompanySelected}
代わりに使用してください。${fn:length(myList) != 0}
...確認したいその他の事項:
アプリケーションmyQuery
内の別の場所で再利用されています...またはmyQuery
、リクエストではなくセッションで作成した場合は、同じページで再帰的に2回再利用されています。
また、taglibapptags
が自分で作成された場合、別の可能性として、タグを操作してはいけない可能性があります。