2012-02-15 16 views
1

我已經按照我的jsp頁面循環:這裏如何訪問Java地圖對象在JSP

<c:forEach var="i" begin="1" end="${ toLvvt }" step="1"> 
     <c:set var="mapKey">${to.id}-${record.rId}-${record.opjakso}</c:set> 
     <c:if test="${MyMap[mapKey].v1s eq true}"> 
      ...do something... 
     </c:if>> 

問題是,我想用var i獲取地圖對象的值(以上v1s)是這樣的:v${i}s但這是錯的。

我有地圖Map<string, Object>。對象具有布爾性質V1S,V1K,V2S,V2K ...

+1

嗯.....什麼? – skaffman 2012-02-15 11:50:15

+0

是'v1s'地圖中值的一個屬性? – Bozho 2012-02-15 11:51:44

回答

0

只需按照您創建mapKey的方式創建它即可。

E.g.

<c:forEach var="i" begin="1" end="${toLvvt}" step="1"> 
    <c:set var="mapKey" value="${to.id}-${record.rId}-${record.opjakso}" /> 
    <c:set var="property" value="v${i}s" /> 
    <c:if test="${MyMap[mapKey][property]}"> 
    .. 
    </c:if> 
</c:forEach> 

(注意,我簡化了一個和其他)

+0

老兄,謝謝!這解決了我的問題。我很親密,但從來沒有想過你提供的符號... – 2012-02-16 13:46:23

+0

不客氣。 – BalusC 2012-02-16 13:47:03

0

編輯:確定你的修改後,我理解這個問題更好,但我認爲你正在嘗試做的是不可能的:你應該嘗試在您的地圖值上實施List getVs(),返回v{i}s列表,然後在您的jsp中將其與value.vs[i]一起使用。

爲了記錄在案,我的第一個答案是:

<c:forEach>首先旨在遍歷集合,因此你應該嘗試這樣的事:

<c:forEach var="entry" items="${MyMap}"> 
    <c:if test="${entry.value.v1s}"> 
     ...do something... 
    </c:if> 
</c:forEach> 

您可能需要使用LinkedHashMapTreeMap如果你想要以某種方式對輸出進行排序。您可能還想看看Display tag庫。

+0

這不會解決我的問題。外部的forEach循環用於循環遍歷不斷變化的年份,我需要直接訪問我的地圖中的對象來檢查它是真的還是假的/年 – 2012-02-15 12:16:19