< c: si > etiqueta para la página JSF
-
10-07-2019 - |
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?
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
.