2014-03-05 103 views
0

我需要使用JSTL,理想情況下我認爲數組會更好,因爲我需要使用data.rows中的SQL數據創建一堆帶有值的變量,但我需要使用row.type從數據中獲取變量名稱。但是我發現這很難,因爲你不能使用「$ {row.type}」來定義一個會話變量,因爲它引發了一個異常。它必須是一個具體的變量名稱。我本來以爲陣列將是最好的,但不知道如何從我的SQL查詢JSTL做到這一點:如何在JSTL中創建動態變量名或替代

<sql:query var="data"> 
    SELECT type, balance FROM Account WHERE account_number IN (SELECT account_number FROM CustomerAccount WHERE customer_number = "${sessionScope.CustomerNumber}"); 
</sql:query> 

這是代碼:

<c:forEach var="row" items="${data.rows}"> 
    <c:set var="${row.type}" value="${row.balance}" scope="session" /> 
</c:forEach> 

任何幫助或建議將是輝煌!謝謝。

回答

1

試試這個,

<c:forEach var="row" items="${data.rows}" varStatus="status"> 
    <c:set var="rowType${status.count}" value="${row.balance}" scope="session" /> 
    </c:forEach> 

所以它會創建像rowType1,rowType2和等及其相應的值將是平衡。 這裏,

${status.count} 

是像在for循環的指標。

或者嘗試了這一點,

<c:forEach var="row" items="${data.rows}"> 
    <c:set var="rowType${row.type}" value="${row.balance}" scope="session" /> 
    </c:forEach> 
+0

''不接受動態變量爲'var'屬性,所以這不起作用。 –