The forEach tag is a replacement for the JSTL <c:forEach> tag. Though as of JSF 1.2/JSP 2.1/JSTL 1.2, <c:forEach> can be used with any JSF components or tags, it does not support "varStatus" when used with deferred evaluation. This tag adds support for varStatus (other than "current" which is not supported). (Note: this tag is not supported in Facelets, because c:forEach is fully functional in Facelets.) Unlike the old ADF af:forEach built with JSF 1.1, however, this tag can be used with any JSP 2.1-based tag, JSF or non-JSF. This tag also has a limitation not found in <c:forEach>: <af:forEach> does not currently support arbitrary java.util.Collections; it can only iterate over java.util.Lists or arrays.
<source>
<af:selectOneListbox value="#{someValue}">
<af:forEach var="item" items="#{model.listOfItems}">
<af:selectItem value="#{item.value}" text="#{item.text}"/>
</af:forEach>
</af:selectOneListbox>
</source>
<source>
<af:forEach varStatus="vs" begin="1" end="5">
<af:outputText id="ot2" value="#{vs.index} #{vs.count} #{vs.begin}"/>
</af:forEach>
</source>
| Name | Type | Supports EL? | Description |
|---|---|---|---|
| begin | int | No | index at which iteration begins |
| end | int | No | index at which iteration ends |
| items | Object | Only EL | the collection to iterate over |
| step | int | No | number to increment on each iteration |
| var | String | No | name of the variable exposed when iterating |
| varStatus | String | No | name of the loop status exposed when iterating. The properties 'index','count','begin','end','step','first','last' are available through this |