JSP dataTable header - Datenwerte verwenden?

geqoo

Bekanntes Mitglied
Hallo,

ich stehe hier momentan vor einem kleinen Problem.
Ich habe eine kleine Tabelle, die in etwa so ausschaut:

Kalenderjahr|Basis|Gewicht|
Wert1|Wert2|Wert3|Hinzufügen
Wert1|Wert2|Wert3|Entfernen

Ich habe also rechts einen Entfernen und einen hinzufügen Button. Diese habe ich mittels dem rendered Attribut so konfiguriert, dass der Entfernen Button immer in der letzten Zeile steht und der Hinzufügen Button immer in der vorletzten.
Das Problem dabe ist jetzt, wenn nur ein Datensatz da ist, gibt es keine vorletzte Zeile (für den Hinzufügen Button) und demnach wird dieser nicht angezeigt.
Stattdessen würde ich in diesem Fall den Hinzufügen Button gern im Header anzeigen lassen, allerdings möchte ich das nur machen, wenn es nur einen Datensatz gibt, wäre ja mit rendered="#{arraySize == 1}" kein Problem. Allerdings kommt es mir so vor, als könne man im <facet> Tag nicht auf die Daten der Tabelle zugreifen (wenn ich das da rein schreibe, zeigt er einfach nur "Submit Button" als Button Text an).

Meine Frage nun: Ist es irgendwie möglich, im Header das Attribut zu bekommen, wieviele Datensätze man hat?


Java:
<t:dataTable value="#{dummyDataBean.datas}" var="dataItem" rowCountVar="arraySize">
  <h:column>
    <f:facet name="header">
      <h:commandButton id="nButtonAddAlt" value="#{messages.buttonAdd}" styleClass="button nButtonAdd" action="#{dummyDataBean.addData()}" rendered="#{(arraySize == 1)}" />
    </f:facet>
    // ...
  </h:column>
</t:dataTable>
 
Zuletzt bearbeitet:
du hast um das f:facet eine h:column, wenn du die entfernst sollte es gehen:

Java:
    <t:dataTable value="#{dummyDataBean.datas}" var="dataItem" rowCountVar="arraySize">      
        <f:facet name="header">
            <h:commandButton id="nButtonAddAlt" value="#{messages.buttonAdd}" styleClass="button nButtonAdd" action="#{dummyDataBean.addData()}" rendered="#{(arraySize == 1)}" />
        </f:facet>
// ...     
</t:dataTable>
 
Ich will den Button aber nicht über der Headerzeile anzeigen (was mit deinem Beispiel so passieren würde), sondern eben in der Headerzeile, wo auch die Überschriften stehen.
Ich habe übrigens mittlerweile selbst herausgefunden:

Wenn man die die size-Methode einfach von der Bean aus aufruft, anstatt mit dem Parameter der dataTable, dann scheint es zu gehen.

Java:
rendered="#{(dummyDataBean.datas.size() == 1)}"
 
Zuletzt bearbeitet:
>> rendered="#{dummyDataBean.datas.size() eq 1}"
ist richtig
bzw.
rendered="#{(dummyDataBean.datas.size() == 1)}"
ist das gleiche
 
Zuletzt bearbeitet:

Zurück
Oben