2013-03-31 78 views
0

我有以下陣列:迭代HashMap中/ ArrayList的使用JSTL

List<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>(); 

[{name=BIRTH_DATE}, {catVal=07.11.2011}, {catStat=162}, {catVal=30.04.2011}, {catStat=108}, {CatVal=26.01.2011}] 

我想使用JSTL的名字,catVal和CatStat之間做出選擇。我試過以下,但它不起作用。我怎樣才能得到鑰匙?

<table border="1"> 
<c:forEach items="${xml}" var="map"> 
    <tr> 
     <c:choose> 
      <c:when test="${map.key =='name'}"> 
       <td>${map.name}</td> 
      </c:when> 
      <c:when test="${map.key == 'catVal'}"> 
       <td>${map.catVal}</td> 
      </c:when> 
      <c:when test="${map.key == 'catStat'}"> 
       <td>${map.catStat}</td> 
      </c:when> 
     </c:choose> 

    </tr> 
</c:forEach> 

回答

0

假設你${xml}包含array屬性請求/會話:

  • 你試圖讀取Map小號直接的條目。您應該開始閱讀列表中Map s的元素。
  • How to iterate an ArrayList inside a HashMap using JSTL?,您使用錯誤的語法來訪問您的地圖的當前條目值。你應該在你的代碼中使用entry.value

    <table border="1"> 
        <c:forEach items="${xml}" var="itemMap"> 
         <c:forEach items="${itemMap}" var="mapEntry"> 
         <tr> 
          <td> 
           <c:choose> 
            <c:when test="${mapEntry.key == 'name'}"> 
             <c:out value="Name:" /> 
            </c:when> 
            <c:when test="${mapEntry.key == 'catVal'}"> 
             <c:out value="Cat value:" /> 
            </c:when> 
            <c:when test="${mapEntry.key == 'catStat'}"> 
             <c:out value="Cat status:" /> 
            </c:when> 
           </c:choose> 
          </td> 
          <td> 
           ${mapEntry.value} 
          </td> 
         </tr> 
         </c:forEach> 
        </c:forEach> 
    </table> 
    
+0

感謝您а全面的解釋! –

+0

@GeorgeSharvadze不客氣。 –

+0

@LuiggiMendoza我也有類似的問題[這裏](http://stackoverflow.com/questions/22293665/how-to-show-multiple-tables-depending-on-key-in-the-map-using-jstl) 。看看你能否幫助我..任何幫助將不勝感激。 – 2014-03-10 21:46:45