2013-06-24 1 views
0

Я пытаюсь выяснить, как я могу проверить, будет ли сохраненная SQL-процедура, которая будет выполняться, вернуть более одной строки в качестве набора результатов. У меня есть метод forEach, который выводит строки, но я, похоже, не могу проверить более позднюю погоду, это набор результатов - это одна или несколько строк. Мне нужно только знать, как проверить, является ли результат БОЛЕЕ одной строки. Вся помощь приветствуется. Вот немного snipplet моего jsp.Как проверить, возвращает ли набор результатов более одной строки в 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

спасибо за совет, ГТ кажется, работает хорошо. Однако я заметил, что я не мог вызывать строку из-за оригинала 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

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

+0

спасибо за полезный отзыв – ghoulfolk

Смежные вопросы