Recursão em um JSP

Digamos que eu tenha um objeto que contém objetos do mesmo tipo que os filhos, assim:

public class Box {
int id;
String name;
List<Box> boxList;
}

Como faço para iterar por meio de seus filhos potencialmente infinitos no JSP? Simples: faça com que uma página se inclua. Tenho duas páginas, main.jsp e box.jsp.

Primeiro, main.jsp incluirá box.jsp depois de definir a lista de caixas no escopo da solicitação:

<c:set var="boxList" value="${boxList}" scope="request" />
<jsp:include page="box.jsp" />

Em seguida, box.jsp itera sobre a lista e se inclui para iterar sobre seus filhos:

<ul>
<c:forEach var="box" items="${boxList}">
<li>
${box.name}
<!-- or whatever else you want to display -->
<jsp:include page="box.jsp" />
</li>
</c:forEach>
</ul>

Estrondo. Feito.