# PanelGrid aus einer Liste



## Conti (2. Mrz 2010)

Hallo Leute,

ich hab schon wieder ein Problem, an dem wohl nur ich die Zähne ausbeisse.

Ich ermittle aus einer DB Daten und möchte diese dann auf der Seite in einem PanelGrid mit max 7 Spalten anzeigen.
Also, 7 Einträge in einer Zeile und wenn mehrere Einträge vorhanden sind, sollen diese dann in einer zweiten Zeile angezeigt werden.

Manuell ist das ja kein Problem, aber wie mach ich das mit einer Liste (ArrayList - kann aber auch eine andere Collection benutzen)

Ich habe bereits dataTable versucht, kann aber da nur eine Spalte erstellen - brauch aber 7 Spalten!

Jemand eine Ahnung?

Danke im Voraus!


----------



## dronox (3. Mrz 2010)

Hey,

in DataTable kann man beliebig viele Spalten deklarieren.


```
<h:dataTable value="#{backing.bean}" var="item">
   <h:column>
       <h:outputText value="#{item.value1}" />
   </h:column>
   <h:column>
       <h:outputText value="#{item.value2}" />
   </h:column>
   <h:column>
       <h:outputText value="#{item.value3}" />
   </h:column>
</h:dataTable>
```

Was mir dort jetzt als Workaround für dein Problem einfallen würde wäre folgendes:

Nehmen wir an deine ArrayList enthält nur Strings und du möchtest aber immer 7 nebeneinander haben (wenn möglich). Also erstellst z.B. Klasse TempStringStorage mit 7 Strings und baust die String-ArrayList in eine ArrayList von TempStringStorage-Objekten um.

Dann kannst du oben 7 Spalten definieren mit jeweils item.value1 bis item.value7 und falls für eine Zeile ein String null ist, weil der Wert fehlt, wird dieser ja nicht angezeigt.

Gruß Dustin


----------



## Conti (4. Mrz 2010)

Danke für die Antwort - Dein Workaround wäre zumindest eine Lösung.

Habe schon bisschen in Büchern rumgestöbert - PanelGrid wird nie dynamisch erzeugt. 
Übrig bleibt also nur DataTable, eben mit dem bekannten Manko oder ui:repeat. Aber auch das erzeugt nur eine Liste, sprich nur eine Spalte. 

Überlege, ob es möglich ist, aus einer Bean heraus JSF-Output zu erzeugen.
Denn dann könnte ich in der Bean (in Java) ein dynmischen Output generieren.

Daher nun meine Frage, kann ma aus der Bean heraus ein JSF-Output erzeugen???


----------



## JanHH (5. Mrz 2010)

Da würd ich wohl ein eigenes JSF-Tag für bauen.. ist eine saubere Lösung und man kann genau das machen, was man will.


----------

