This project has retired. For details please refer to its Attic page.
Apache Tiles - Framework - List Attributes

List Attributes

Up to now we have seen simple attributes, i.e. attributes that have a simple value: a template, a string or a definition. But there are cases where you need a collection of values, for example a list of definitions to be redendered one below the other.

To include a list attribute you can use the <put-list-attribute> tag in your Tiles definitions file:

<definition name="myapp.homepage.body" template="/layouts/variable_rows.jsp">
  <put-list-attribute name="items">
    <add-attribute value="/tiles/banner.jsp" />
    <add-attribute value="/tiles/common_menu.jsp" />
    <add-attribute value="/tiles/credits.jsp" />
  </put-list-attribute>
</definition>

In your template page, you can read the list attribute iterating over its elements:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<tiles:useAttribute id="list" name="items" classname="java.util.List" />
<c:forEach var="item" items="${list}">
  <tiles:insertAttribute value="${item}" flush="true" />
  <br/>
</c:forEach>

The list attribute is first converted into a scripting variable; after that it is iterated using the <c:forEach> tag. The compound attributes are then rendered one after the other.