JSF h: dataTable erstellt eine einzelne leere Zelle, wenn keine Datensätze vorhanden sind

Gibt es eine Möglichkeit zu verhindern, dass ein h: datatable eine leere Zeile erstellt, wenn der Hintergrundwert leer ist? Genauer gesagt: Ich habe eine Sammlung von Daten, die in 3 Spalten in einer h: dataTable mit Spaltenüberschriften angezeigt werden sollen. Der Kopf muss immer angezeigt werden, unabhängig davon, ob sich Elemente in der Liste befinden. Dies funktioniert einwandfrei, aber wenn sich keine Elemente in der Liste befinden, wird eine einzelne, leere Zeile / Zelle im Körper erstellt. Gibt es eine Möglichkeit, dies zu verhindern?

Vielen Dank!

Beispielmethode aus Backbohne. Zum Testen habe ich versucht, beide null oder eine leere Liste zurückzugeben. Gleiches Ergebnis für beide.

    public List<LocationsDecorator> getLocations() {
    return null;
}

JSF-Fragment:

<h:dataTable styleClass="locations" id="locations1"
    var="nearestLoc" value="#{confirmationBean.locations}">
    <h:column>
        <!-- column header -->
        <f:facet name="header">Address</f:facet>
        <!-- row record -->
            #{nearestLoc.adddress}
        </h:column>
    <h:column>
        <!-- column header -->
        <f:facet name="header">Distance</f:facet>
        <!-- row record -->
            #{nearestLoc.distance}
        </h:column>
    <h:column>
        <!-- column header -->
        <f:facet name="header">Hours of Operation</f:facet>
        <!-- row record -->
        <h:dataTable styleClass="locations" var="data"
            value="#{nearestLoc.hoursOfOperation}">
            <h:column>     
                #{data}
                </h:column>
        </h:dataTable>

    </h:column>

</h:dataTable>

Resultierendes HTML (Das "<tr><td></td></tr>"im tbody ist das problem):

<table id="contact:locations1" class="locations">
<thead>
<tr>
<th scope="col">Address</th>
<th scope="col">Distance</th>
<th scope="col">Hours of Operation</th>
</tr>
</thead>
<tbody>
<tr><td></td></tr></tbody>
</table>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage