Iterate over elements of List and Map using JSTL tag

Suppose ${list} points to a List<Object>, then the following

<c:forEach items="${list}" var="item">
    ${item}<br>
</c:forEach>

does basically the same as as following in “normal Java”:

for (Object item : list) {
    System.out.println(item);
}

If your ${list} is a List<Person> where Person is a Javabean having name and email properties represented by getName() and getEmail() getter methods, then the following

<c:forEach items="${list}" var="person">
    ${person.name}<br>
    ${person.email}<br>
</c:forEach>

does basically the same as as following in “normal Java”:

for (Person person : list) {
    System.out.println(person.getName());
    System.out.println(person.getEmail());
}

If you have a List<Map<K, V>> instead, then the following

<c:forEach items="${list}" var="map">
    <c:forEach items="${map}" var="entry">
        ${entry.key}<br>
        ${entry.value}<br>
    </c:forEach>
</c:forEach>

does basically the same as as following in “normal Java”:

for (Map<K, V> map : list) {
    for (Entry<K, V> entry : map.entrySet()) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue());
    }
}

The key and value are here not special methods or so. They are actually getter methods of Map.Entry object (click at the blue Map.Entry link to see the API doc). In EL (Expression Language) you can use the . dot operator to access getter methods using “property name” (the getter method name without the get prefix), all just according the Javabean specification.

See also:

  • Places where JavaBeans are used?
  • Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern
  • javax.el.PropertyNotFoundException: Property ‘foo’ not found on type com.example.Bean

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)