2010-11-10 13 views

Odpowiedz

26

Można zadzwonić varStatus.index aby uzyskać indeks bieżącego rundzie iteracji, a następnie użyć go jako odnośnika do drugiej listy.

Na przykład, jeśli masz dwie listy people.firstnames i people.lastnames można zrobić:

<c:forEach var="p" items="${people.firstnames}" varStatus="status"> 
    <tr> 
     <td>${p}</td> 
     <td>${people.lastnames[status.index]}</td> 
    </tr> 
</c:forEach> 
+0

Całkiem proste i sprytne podejście. +1 –

+0

dzięki. to działało. – randy

0

Zakładam, że musisz kolekcje, które chcesz iterować za jednym razem. Dodaj moduł pobierający, który połączy te dwie kolekcje i użyje go do iteracji. Na przykład

private Collection<String> first; 
private Collection<String> second; 

public Collection<String> getBoth() 
{ 
    List<String> result = new ArrayList<String>(); 
    result.addAll(first); 
    result.addAll(second); 
    return result; 
} 

iteracji w JSTL:

<c:forEach var="p" items="${people.both}"> 
    <tr> 
     <td>${p}</td> 
    </tr> 
</c:forEach> 
+0

za pomocą tego, w jaki sposób można iteracyjne pierwsze i drugie zbiory za pomocą JSTL foreach? dzięki boris – randy

+0

Użyj wyniku getBoth() ??? – ZeissS