0

我试图弄清楚如何检查我正在运行的存储 sql 过程是否将返回多行作为结果集。我有一个打印出行的 forEach 方法,但我似乎无法稍后检查结果集是一行或多行的天气。我只需要知道如何检查结果是否超过一行。感谢所有帮助。这是我的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。对于如何检查结果集是否有数据,我找到了很好的解决方案,但是对于如何完全在 JSP 中并且最好不使用 java 来完成它却一无所获。正如您可能知道的那样,我对 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 端进行大小检查,而不必为模型制作新的部分?

4

2 回答 2

1

${ row >'1'}给你格式错误的 XML,因此 JasperException。尝试

${ row gt 1 }
于 2013-06-24T09:43:23.657 回答
1

您不必这样做'1',只需使用1

所以

<c:if test="${ row > 1 }">
 <tr>
  <td>
   <%--do something here if it is bigger than 1--%>
  </td>
 </tr>
</c:if>

应该工作提供row的是整数行数。

这里有一些很好的 jstl 运算符示例http://www.hscripts.com/tutorials/jsp/operators/relationalopr.php

于 2013-06-24T09:45:02.033 回答