When <ui:repeat> works for X but <c:forEach> works for Y
Solution 1
<c:forEach>
does not build JSF tree nodes on the server. You can see this directly in the html, the inputs do not have the usual long and distinct id="j_12:customerTabPanel:j_34:customerName"
.
Please, read this:
https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat
Solution 2
<c:***>
tags are build-time tags, as <ui:***>
are rendered-time tags. To get the difference between these two concepts, I recommand you to read the two links below:
<c:forEach>
vs<ui:repeat>
-
Why<ui:repeat>
does not work?
(editor's note (2013-01-03: dead link)
Marcel Menz
Updated on June 05, 2022Comments
-
Marcel Menz almost 2 years
I use
<c:foreach>
in my jsf app to iterate over a list of people. I don't use<ui:repeat>
because every person has its own tab (primefaces). JSF hero 'BalusC' already helped my out on this one link. Now I tried to save (postback) the data. This doesn't work with<c:forEach>
, the approriate setter of the Person object gets never called. With<ui:repeat>
it works. Obviously I haven't grasped the difference between the two tags so I would appriciate some enlightenment.Thanks
Marcel