Search code examples
jsp-tags

JSP foreach tag for two variables


I want to do something like this

<c:forEach var="item1" items="List1" var="item2" items="List2">
 <p> ${item1} ${item2}</p>
</c:forEach>

One solution is to iterate through both the List, if both are of same size

<c:forEach var="i" begin="0" end="$(fn:length(List1))">
 <p> <%= List1.get(i) %> <%= List2.get(i)%>  //wrong syntax 
</c:forEach>

Any idea how to achieve this.


Solution

  • You can call varStatus.index to get the index of the current round and then use it as a lookup for the second list. Mind the length of the Lists though or it will throw an Exception . Set the items with the List having maximum of the two.

    <c:forEach var="element" items="${List1}" varStatus="status">
     <p>
      ${element}
      ${List2[status.index]}
    </c:forEach>
    
    1. Documentation.
    2. How to avoid Java Code in JSP-Files?