varstatus for example jsf primefaces foreach datatable jstl

jsf - for - primefaces ui repeat example



¿Por qué<c: forEach> o<ui: repeat> no se puede acceder a<p: dataTable var>? (1)

El <c:forEach> debería funcionar con value="#{item.gamesEntered}" lugar de la cadena completa, pero no es así.

Las etiquetas JSTL se ejecutan durante el tiempo de compilación de vista, creando el árbol de componentes JSF. Los componentes JSF se ejecutan durante el tiempo de visualización de visualización, produciendo salida HTML. Por lo tanto, en el momento en que <c:forEach> ejecuta, <p:dataTable> no se ha ejecutado y su <p:dataTable> no está disponible y se evaluará como null . Tenga en cuenta que lo mismo se aplica a rowIndexVar , que se evaluará como 0 (el valor predeterminado de un int ).

Ver también

He intentado <ui:repeat> pero de cualquier forma la página aparece en blanco donde debería haber aparecido esta información.

UIData componentes de UIData solo pueden aceptar elementos UIColumn . El <ui:repeat> no es tal. El <c:forEach> funciona porque básicamente produce un grupo de componentes físicos <p:column> para la tabla de datos. Tienes suerte de que cada elemento tenga aparentemente la misma cantidad de gamesEntered como el primer elemento, de lo contrario, también habría fallado.

Ver también:

Por cierto, necesitas <p:columns> que es básicamente un <ui:repeat> que se extiende desde la clase UIColumn . Pero también aquí, su value no puede establecerse por fila, solo por tabla. rowIndexVar no está disponible en <p:columns value> y se evaluará como 0 todos modos.

<p:dataTable value="#{events.gameRecordList}" var="item" rowIndexVar="rowIndex"> <p:column>#{item.field1}</p:column> <p:column>#{item.field2}</p:column> <p:columns value="#{events.gameRecordList[0].gamesEntered}" columnIndexVar="columnIndex"> <p:selectBooleanCheckbox value="#{events.gameRecordList[rowIndex].gamesEntered[columnIndex]}"/> </p:columns> </p:dataTable>

Ver también:

Estoy trabajando con jsf Mojarra 2.2.7, Java 8, Primefaces 5.1 y netbeans 8.0.2

Tengo un Event clase con una propiedad List<GameRecord> gameRecordList . GameRecord incluye List<Boolean> gamesEntered y otras propiedades. La idea es que tengo una lista de personas en un evento y estoy configurando si se inscriben en apuestas o competiciones.

En mi archivo .xhtml tengo

<p:dataTable value="#{events.gameRecordList}" var="item" rowIndexVar="rowIndex"> <p:column>#{item.field1}</p:column> <p:column>#{item.field2}</p:column> <c:forEach items="#{events.gameRecordList.get(rowIndex).gamesEntered}" var="game"> <p:column> <p:selectBooleanCheckbox value="#{game}"/> </p:column> </c:forEach> </p:dataTable>

El <c:forEach> debería funcionar con value="#{item.gamesEntered}" lugar de la cadena completa, pero no es así. He intentado <ui:repeat> pero de cualquier forma la página aparece en blanco donde debería haber aparecido esta información.

¿Tiene sentido o hay alguna razón por la que se requiera el direccionamiento completo para que funcione?