Tag für JSF-Seite
-
10-07-2019 - |
Frage
Gebrauchte Portlets und JPS ist zu entwickeln, so hat ein Dilemma.
Aufgabe: Anzeige <h:dataTable>
nur dann, wenn die Liste nicht leer ist
Ist es möglich, <c:if>
Tag für JSF-Seite zur Verfügung stellen?
Lösung
Ja, können Sie JSTL-Tags in Ihrer JSF-Seiten hinzufügen. Aber in Ihrem Fall, können Sie einfach wie folgt vor:
<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
...
</h:dataTable>
mit dem folgenden Verfahren in myBean
:
public boolean isDisplayTable() {
return list != null && list.size() > 0;
}
Sie können auch die (nicht sicher, ob es funktionieren wird) versuchen:
<!-- 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>
Beachten Sie, dass die !
anstelle des not
Schlüsselwort in den EL-Ausdrücken (siehe Anleitung verwenden können hier über EL Ausdrücke), die in rendered="#{!empty myBean.list}"
führt.
Andere Tipps
<c:if>
(und andere JSTL-Tags) können in den meisten Fällen in JSF verwendet werden. Jedoch kann das nicht innerhalb von Komponenten verwendet, die auf Sammlungen iterieren - wie <h:dataTable>
. Aber in Ihrem Fall sollten Sie die <c:if>
außen, so dass es möglich ist. Doch wie romaintaz hingewiesen, es ist besser, das rendered
Attribut zu verwenden.