2010-05-17 3 views
115

Я ищу, чтобы JSTL цикл через Map<String, String> и вывести значение ключа и его значение.Петля через карту с JSTL

Например, у меня есть Map<String, String>, который может иметь любое количество записей, я хотел бы пропустить эту карту с помощью JSTL и вывести как ключ, так и его значение.

Я знаю, как получить доступ к значению с помощью ключа, ${myMap['keystring']}, но как мне получить доступ к ключу?

+0

Связанный: http://stackoverflow.com/questions/2117557/how-to-iterate-an-arraylist-inside-a-hashmap-using-jstl – BalusC

ответ

255

Как это:

<c:forEach var="entry" items="${myMap}"> 
    Key: <c:out value="${entry.key}"/> 
    Value: <c:out value="${entry.value}"/> 
</c:forEach> 
+11

Примечание для других: не пытайтесь назвать var in forEach loop «param» – user11153

2

Вы можете перебрать хэш-карту, как этот

<% 
ArrayList list = new ArrayList(); 
TreeMap itemList=new TreeMap(); 
itemList.put("test", "test"); 
list.add(itemList); 
pageContext.setAttribute("itemList", list);        
%> 

    <c:forEach items="${itemList}" var="itemrow"> 
    <input type="text" value="<c:out value='${itemrow.test}'/>"/> 
    </c:forEach>    

Для получения дополнительной функциональности JSTL смотрите here

+31

Не используйте scripl етсь. Они плохие. – tad

+0

@tad Я тоже это слышал. Но почему? –

+6

@ TJ- Как правило, есть несколько веских причин, чтобы поставить мощную логику в ваших шаблонах; их трудно отлаживать, они смешивают парадигмы, и они могут давать неожиданные результаты. Кроме того, JSTL aready предоставляет возможность для чистой итерации карт: тега forEach. – tad

Смежные вопросы