JSTL sql:查询变量

Bri*_*ian 7 java jsp jstl

我在JSP文件中编写了以下代码:

<c:catch var="e">
    <%
        int accountNumber = Integer.parseInt(request.getParameter("accountNumber"));
        int depositAmount = Integer.parseInt(request.getParameter("depositAmount"));
    %>
    <sql:query var='account' dataSource="jdbc/bank">
        select * from account where AccountNumber=<%= accountNumber %>      
    </sql:query>
    <c:choose>
        <c:when test="${account.first() == false}">
            <p>Account not found</p>
        </c:when>
        <c:otherwise>
            <h3>Deposit Made</h3>
            <p>Account number: <%= accountNumber %></p>
            <p>Deposit amount: <%= depositAmount %></p>
            <p>New balance: </p>
        </c:otherwise>
    </c:choose>
</c:catch>


<c:if test="${e != null}">
    error
</c:if>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是以下代码抛出一个javax.el.MethodNotFoundException:无法找到[0]参数异常的方法[first]:

<c:when test="${account.first() == false}">
  <p>Account not found</p>
</c:when>
Run Code Online (Sandbox Code Playgroud)

我需要访问sql:query中的帐户变量,以便检查第一行是否存在.

Bal*_*usC 5

<sql:query var='account' dataSource="jdbc/bank">
Run Code Online (Sandbox Code Playgroud)

根据<sql:query>文档,这account是一个javax.servlet.jsp.jstl.sql.Result.

<c:when test="${account.first() == false}">
Run Code Online (Sandbox Code Playgroud)

根据类'javadoc,该类没有first()方法.然而,有一种getRowCount()方法.我建议改用它.

<c:when test="${account.rowCount == 0}">
Run Code Online (Sandbox Code Playgroud)