JSTL变量不起作用

时间:2011-05-23 15:31:00

标签: jsp jstl

我写了以下代码:

<%
        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:forEach var="result" begin="0" items="${account.rows}">
        <c:set var="balance" value="${ result.balance + depositAmount }" />
        <c:out value="${ balance }" />
    </c:forEach>

问题在于<c:set var="balance" />实际上并没有将两个值加在一起。

我假设depositAmount无法识别?我不确定为什么。

有人可以解释我如何使用JSTL获取请求参数(余额)并将其添加到查询中获得的余额中吗?

这是一项家庭作业,我必须使用JSP。

谢谢

1 个答案:

答案 0 :(得分:3)

Scriptlets (那些<% %>事物)和EL(那些${}事物)不共享相同的变量范围。

Get rid scriptlets 并仅使用EL。请求参数仅在${param.name}提供EL。

<sql:query var="account" dataSource="jdbc/bank">
    select * from account where AccountNumber=${param.accountNumber}      
</sql:query>
<c:forEach var="result" begin="0" items="${account.rows}">
    <c:set var="balance" value="${result.balance + param.depositAmount}" />
    <c:out value="${balance}" />
</c:forEach>