The <a4j:repeat>
has the same lifecycle as <ui:repeat>
(UI component which runs during view render time). So, when replacing 1 on 1, the <ui:repeat>
is the right choice.
The <c:forEach>
is a tag handler which runs during view build time. It does not appear in JSF component tree, however it participates in building it.
The difference is easily observed and understood when used inside a <h:panelGrid>
. The <ui:repeat>
creates a single cell which is re-rendered multiple times. The <c:forEach>
creates multiple cells which is each rendered only once.