Iteracja elementów listy i mapy za pomocą tagu JSTL
Jeśli mam JSF backing bean zwróci obiekt typu ArrayList, powinienem być w stanie użyć <c:foreach>
do iteracji elementów na liście. Każdy element zawiera mapę i chociaż odpowiedź na pytanie, jak uzyskać dostęp do zawartości mapy przez JSTL została udzielona tutaj, Jeśli przekażę tablicę takich Map, nie mogę znaleźć sposobu ich iteracji i nadal uzyskać dostęp do zawartości mapy za pomocą JSTL. Jest dokumentacja, która odnosi się do prostych iteratorów, ale nie do tych, których elementy są same w sobie mapy.
Jeśli ktoś mógłby mi podać prosty przykład, jak lista Javy jest iterowana w JSP, byłbym ogromnie wdzięczny. Mark
2 answers
Mark, to już jest odpowiedź w Twoim poprzednim temacie. Ale OK, znowu to samo:
Przypuśćmy, że ${list}
wskazuje na List<Object>
, wtedy następujące
<c:forEach items="${list}" var="item">
${item}<br>
</c:forEach>
Robi w zasadzie to samo co w "normalnej Javie":
for (Object item : list) {
System.out.println(item);
}
Jeśli zamiast tego masz List<Map<K, V>>
, to następujące
<c:forEach items="${list}" var="map">
<c:forEach items="${map}" var="entry">
${entry.key}<br>
${entry.value}<br>
</c:forEach>
</c:forEach>
Robi w zasadzie to samo co w "normalnej Javie":
for (Map<K, V> map : list) {
for (Entry<K, V> entry : map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
key
i value
nie są tutaj specjalnymi metodami. Są faktycznie metody gettera Map.Entry
obiekt (kliknij niebieski link Map.Entry
, aby zobaczyć dokument API). W języku El (Expression Language) można użyć operatora .
Dot, aby uzyskać dostęp do metod getter używając "property name" (nazwa metody getter bez prefiksu get
), wszystko zgodnie ze specyfikacją Javabean.
To powiedziawszy, naprawdę musisz oczyścić "odpowiedzi" w poprzednim temacie, ponieważ dodają hałas do pytania. Przeczytaj również komentarze, które zamieściłem w Twoich "odpowiedziach".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:27
Spróbuj tego
<c:forEach items="${list}" var="map">
<tr>
<c:forEach items="${map}" var="entry">
<td>${entry.value}</td>
</c:forEach>
</tr>
</c:forEach>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-01 10:38:07