2013-03-19 3 views
0

У меня есть приложение spring + hibernate, где я делаю собственный запрос в моем DAO-слое. Запрос выглядит следующим образомJSTL NumberFormatException

select name, amount from myTable where id=:id 

Очевидно, что выбранные поля различных типов данных (String, Number).

В JSP Я хочу напечатать возвращенный результат в таблице, поэтому я использую foreach loop для прохождения каждой записи в возвращаемом наборе.

Я хочу, чтобы положить отрицательные числа между скобками, так что я использую следующий код

<c:forEach var="item" items="${resultSet}"> 
        <tr> 
         <c:forEach var="v" items="${item}" varStatus="st"> 
            <td> 
           <c:choose> 
            <c:when test="${v != null}"> 
             <c:choose> 
              <c:when test="${v<0}"> 
               <c:out value="(${v})"></c:out> 
              </c:when> 
              <c:otherwise> 
               <c:out value="${v}"></c:out> 
              </c:otherwise> 
             </c:choose> 
            </c:when> 
            <c:otherwise> 
             <c:out value="-"></c:out> 
            </c:otherwise> 
           </c:choose> 
          </td> 
         </c:forEach> 
        </tr> 
       </c:forEach> 

Как первый элемент в запросе строки, этот код запускает NumberFormateException.

Я знаю два решения этой проблемы. Первый - это скобки в SQL-запросе, но я не могу использовать это решение, так как приложение содержит много запросов, и потребуется много времени на изменение всех запросов.

Второе решение - использовать resultTransformer и преобразовывать возвращенные данные в один объект, но это не подходит по той же предыдущей причине.

Есть ли обходной путь для решения этой проблемы?

ответ

0

Вы пробовали вот так?

<c:when test=${v<0}> 
      <c:out value="(${v})"></c:out> 
        </c:when> 
      <c:otherwise> 
      <c:out value="${v}"></c:out> 
+0

это то, что я сделал, пожалуйста, проверьте код в моем вопросе –

+0

проверить первую строку $ {v <0} .remove тех «». –