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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top