2012-03-01 143 views
0

因爲我必須做一個JSP頁面上foreach循環,而不是遍歷集合其他原因集合項目。我需要顯示一個集合的值,但由於內括號的原因,我返回語法錯誤。我必須先將它轉義出來嗎?我怎樣才能解決我的價值然後從colllection中獲得價值?如何顯示在JSP頁面中

<c:if test="${maxColumns >= 0}"> 
    <c:forEach var="i" begin="0" end="${maxColumns}" step="1" varStatus ="status"> 
    <td height="20"> ${columnNames[${i}].columnName</td> 
</c:forEach> 
    </c:if> 

感謝您的幫助。

+1

'$ {columnNames [i] .columnName}'不起作用?也就是說,IMO在視圖層之外更好地完成工作,並且返回一個集合的子集是微不足道的。爲什麼不這樣做呢? – 2012-03-01 22:02:46

+0

是的,它確實工作!我甚至從未考慮過去掉內括號,因爲我認爲首先解決這個問題是必要的。我嘗試了除此之外的一切!非常感謝。同樣爲了回答你的問題,我必須展示整個集合,但是我必須基於來自另一個集合的值以特定方式顯示它們。 – user984701 2012-03-01 22:07:13

+0

爲了清晰起見,回答此問題。 – 2012-03-02 15:23:51

回答

1

您不能嵌套JSP EL表達式這樣,但你不必 - 正確的表達是:

${columnNames[i].columnName} 

i已經因爲forEach標籤的EL範圍的一部分,並應被評估爲任何其他範圍的變量,如columnNames。這裏只是一個收集索引。

雖然我同情感到有必要做這樣的邏輯視圖層,國際海事組織它幾乎總是一個更好的主意來準備集合在Java中的範圍 - 這也是更容易測試。