JSTL NumberFormatException

时间:2013-03-19 11:35:57

标签: java spring hibernate jsp jstl

我有一个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并将返回的数据转换为一个Object,但这不适合以前的原因。

有没有解决此问题的解决方法?

1 个答案:

答案 0 :(得分:0)

你有没有试过这个?

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