2013-03-19 25 views
0

我有一個Spring + Hibernate的應用程序,我讓本機查詢我的DAO層。查詢如下所示JSTL NumberFormatException的

select name, amount from myTable where id=:id 

很明顯,所選擇的領域是不同的數據類型(字符串,數字)。

在JSP我想,所以我用foreach loop要經過的每條記錄在返回set打印在表格中返回的結果。

我希望把括號之間的負數,所以我用下面的代碼

<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

這是我做了什麼請在我的問題的代碼 – 2013-03-19 12:38:59

+0

檢查的第一行$ {V <0}卸下襬臂的「」。 – 2013-03-19 12:46:26