2011-05-23 86 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