2013-06-24 24 views
0

我想弄清楚如何檢查我正在運行的存儲的SQL過程是否會返回多於一行作爲結果集。我有一個forEach方法打印出行,但我似乎無法檢查以後的天氣結果集是一行還是多行。我只需要知道如何檢查結果是否超過一行。所有的幫助表示讚賞。 這是我的jsp的一個小snipplet。如何檢查結果集是否在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側,而無需進行新零件的模型?

回答

1

${ row >'1'}爲您提供了異常的XML,因此JasperException。嘗試

${ row gt 1 } 
+0

謝謝你的建議一些不錯的例子中,GT似乎運作良好。然而,我注意到我無法從最初的forEach調用外部行,我決定使用該行,所以我最終創建了一個新的模型,並將其放入使用常規java的控制器類中。所以我最終創建了一個新的「aStoredProcedureSize」模型部分,其中與「aStoredProcedure」完全相同的模型部分,除了我在末尾調用.size()之外。我想知道.size是否可以在代碼的JSP端調用? – ghoulfolk

+1

@ghoulfolk這是一個不同的問題,但這可能會幫助你:http://stackoverflow.com/questions/851880/check-a-collection-size-with-jstl – Uooo

+0

是啊,那就是我正在尋找的.length方法,我可以直接調用「 ghoulfolk

相關問題