Why does p:panelGrid not work with ui:repeat?

ui:repeat will not work because it does not actually add components to the component tree.

ui:repeat only works during the render phase, and rerenders its child components multiple times with different state.

Some components, such as panelgrid, but also datatable, expect to have certain children in the component tree in order to work correctly. Since ui:repeat does not add these, this approach does not work.

I'm sorry, but the normal solution for this is to use c:foreach, which does add children to the tree.

See https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat