Pregunta

Se utiliza para desarrollar portlets y JPS, por lo que tiene un dilema.

tarea: mostrar < h: dataTable > solo cuando la lista no está vacía

¿Es posible proporcionar la etiqueta < c: if > para la página JSF?

¿Fue útil?

Solución

Sí, puede agregar etiquetas JSTL en sus páginas JSF. Sin embargo, en su caso, simplemente puede hacer lo siguiente:

<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
    ...
</h:dataTable>

con el siguiente método en myBean :

public boolean isDisplayTable() {
    return list != null && list.size() > 0;
}

También puedes probar eso (no estoy seguro si funcionará):

<!-- Idea from Colin Gislason -->
<h:dataTable value="#{myBean.list}"... rendered="#{not empty myBean.list}">
    ...
</h:dataTable>

<h:dataTable value="#{myBean.list}"... rendered="#{not myBean.list.empty}">
    ...
</h:dataTable>

Tenga en cuenta que puede usar la ! en lugar de la palabra clave not en las expresiones EL (consulte una guía aquí sobre expresiones EL), lo que resulta en dered = " # {! empty myBean.list } " .

Otros consejos

< c: if > (y otras etiquetas JSTL) se pueden usar en JSF en la mayoría de los casos. Sin embargo, no se puede usar dentro de componentes que iteran en colecciones, como < h: dataTable > . Pero en su caso, desea que < c: if > esté afuera, por lo que es posible. Sin embargo, como señaló romaintaz, es mejor usar el atributo renderizado .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top