実行中のストアド SQL プロシージャが結果セットとして複数の行を返すかどうかを確認する方法を見つけようとしています。行を出力する forEach メソッドがありますが、結果セットが 1 つ以上の行であることを後で確認できないようです。結果が複数の行であるかどうかを確認する方法を知る必要があるだけです。すべての助けに感謝します。これが私のjspの小さな断片です。
<tr>
<td>
<c:forEach var="row" items="${ aStoredProcedure }">
<fmt:formatNumber value="${ row.totalPrice }"pattern="#,##0.00"/>
<c:out value="${row.currency }"/>
(<c:out value="${ row.id }"/>)
</c:forEach>
</td>
</tr>
上記のコードはうまく機能し、複数の行が返されるかどうかを確認するために何らかの方法で使用する方法がある場合に備えて、ここに含めました (責任上の理由からいくつかの変数の名前を変更する必要がありました) が、天気を確認する必要があるかどうかを確認する必要があります結果は複数の行になり、別のテーブル行でこれを行う必要があります。これまでのところ、私は試しました:
<c:if test="${ aStoredProcedure >'1'}">
<tr>
<td>
<%--do something here if it is bigger than 1--%>
</td>
</tr>
</c:if>
と
<c:if test="${ row >'1'}">
<tr>
<td>
<%--do something here if it is bigger than 1--%>
</td>
</tr>
</c:if>
しかし、これらはまったく機能しません.. JasperExceptions のみを返します。結果セットにデータがあるかどうかを確認する方法については良い解決策を見つけましたが、Java を使用せずに JSP で完全に行う方法については何も見つかりませんでした。おそらくおわかりのように、私は JSP に非常に慣れていないため、手順が複数の結果を返すかどうかを確認する方法を理解する方法について、助けていただければ幸いです。
モデルを配置するために使用するモデルを格納するJavaクラスとしてコントローラークラスがあります。
model.put("aStoredProcedure",managerClass.nameofMethodICallFromMngrClass(aValueIUseToCallMethod(),anotherValueIUseToCallMethod()) );
とりあえず、チェックを完了するためにモデルに新しいパーツを追加する必要がありました。
model.put("aStoredProcedureSize",managerClass.nameofMethodICallFromMngrClass(aValueIUseToCallMethod(),anotherValueIUseToCallMethod()).size() );
次に、JSP 側で何かを行う前に、サイズが 1 より大きいことを確認します。
<c:if test="${ aStoredProcedureSize gt 1}">
<tr>
<td>
<%--do what I want here--%>
</td>
</tr>
</c:if>
これはうまく機能し、私が望むことを行いますが、Java 側に変更を加える必要があり、モデルに新しい部分を作成することなく、JSP 側でサイズのチェックを完全に行うことができるかどうか疑問に思っていましたか?