我有一个spring+hibernate应用程序,我在DAO层中进行原生查询。该查询如下所示
select name, amount from myTable where id=:id很明显,所选字段具有不同的数据类型(字符串、数字)。
在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并将返回的数据转换为一个对象,但由于前面的原因,这种方法并不适用。
有没有解决这个问题的方法?
发布于 2013-03-19 20:27:11
你试过这样做吗??
<c:when test=${v<0}>
<c:out value="(${v})"></c:out>
</c:when>
<c:otherwise>
<c:out value="${v}"></c:out>https://stackoverflow.com/questions/15498385
复制相似问题