2013-06-25 93 views
1

不工作,我有以下代碼:detailsMap是LinkedHashMap的類型的地圖。我能夠將值$ {roleType}作爲L1,正確地打印$ {detailsMap [「L1」]}而不是$ {detailsMap [roleType]}的值。請建議我做錯了什麼。角色類型是枚舉值。獲取使用鑰匙從地圖價值JSP

<c:set var="detailsMap" value="${hostDetails.value}" /> 
    <c:forEach items="${roleTypes}" var="roleType"> 
    <td>${detailsMap[roleType]}</td> 
    <td>${detailsMap["L1"]}</td> 
    <td><input type="text" name="${roleType}" value="" /></td> 
    </c:forEach> 
    </tr> 
    </c:forEach> 

我把它通過設置屬性爲字符串列表到位枚舉值的工作。

回答

1

我本來期望的是工作。我在這裏有一些代碼,我做這樣的事情:

<c:set var="roleType" value="${someOtherVariable}" scope="page"/> 
<li class="${cssMap[roleType]}"/> 

而且工作。由於某種原因,迭代變量是否需要放在頁面範圍中?

+0

我只需要這個迭代的迭代變量。但我能夠在​​獲得角色類型的正確值。 – PhantomM

0

不知道我非常理解這個問題,但是從我的理解這部分:

<c:forEach items="${roleTypes}" var="roleType"> 
<td>${detailsMap[roleType]}</td> 

應該像這樣的東西來代替:

<c:forEach items="${roleTypes}" var="roleType"> 
<td>${detailsMap[${roleType}]}</td> 

的解釋是,roleType不一個字符串,但是一個迭代器,你想要的是迭代器的值,因此你需要${}

Coudn't測試這個,但這是我認爲可能是一個問題。

相關How to iterate an Arraylist inside a HashMap using jstl ?

祝你好運。

+0

它沒有工作。 – PhantomM

+0

哼...是否有必要遍歷那個'enum'? – Akheloes

+0

現在,我傳遞的字符串列表不枚舉值,然後,它的工作。謝謝你的幫助。 $ {detailsMap [$ {roleType}]}表達式給出錯誤。儘管我可以使用帶有String列表的$ {detailsMap [roleType]}。 – PhantomM