2011-05-23 52 views
1

我写了下面的代码: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。

谢谢

回答

3

小脚本(那些<% %>东西)和EL(那些${}事)不共享相同的变量范围。

Get rid of scriptlets and use EL only。请求参数在EL中可用,只需${param.name}

<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> 
+0

这工作完美。感谢您的信息和帮助。在过去的两个小时里,我一直把我的头撞到桌子上。 – Brian 2011-05-23 15:40:16

+0

不客气。如果答案有助于解决问题,请不要忘记标记接受的答案。另请参阅http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235对于以前询问的问题,只要适用,就应该采取同样的措施http://stackoverflow.com /用户/ 393440 /布赖恩 – BalusC 2011-05-23 15:48:54