I am attempting to iterate over a TreeMap of ArrayLists using JSTL. If the ArrayLists contain Strings it works. However, if the ArrayLists contain simple javabeans I get the following error:
javax.servlet.ServletException: Don't know how to iterate over supplied "items" in <forEach>
Here is sample code:
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.TreeMap" %>
<%
class Node {
private
String name;
private boolean checked = false;
public Node(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public boolean getChecked() {
return this.checked;
}
}
ArrayList list1 = new ArrayList();
list1.add(new Node("1-1"));
list1.add(new Node("1-2"));
list1.add(new Node("1-3"));
ArrayList list2 = new ArrayList();
list2.add(new Node("2-1"));
list2.add(new Node("2-2"));
list2.add(new Node("2-3"));
TreeMap map = new TreeMap();
map.put("list1", list1);
map.put("list2", list2);
pageContext.setAttribute("map", map);
%>
<c:forEach var="mapItem" items="${map}">
<c:forEach var="list" items="${mapItem.value}">
<c:forEach var="listItem" items="${list}">
${listItem.name}<br />
${listItem.checked}<br />
</c:forEach>
</c:forEach>
</c:forEach>
Any idea what wrong?
Thanks,
Gary Blomquist