# JSTL + Struts (inkl.Hibernate) -> forEach Problem



## Till (9. Dez 2005)

Hallo Forum,

ich knabbere seit heute an einem komischen Problem in meiner ( 1/6 fertigen J2EE-Applikation):
Kern:

Ich habe ein JavaBean, welches ein java.util.Set an anderen JavaBeans enthält. Nun gebe ich in meiner Struts(-Dialogs)-Action dieses Bean (nachdem es von Hibernate gefüllt wurde) an die Session ab, meine JSP soll nun diese Bean anzeigen.

Anzeige der Properties des 1. Beans - kein Problem. das geht einfach mit 


```
<bean:write property="nachname"
      name="app_attendants_data" />
```

Nun möchte ich aber alle Beans aus dem Set in einer table anzeigen. 
Und: möglichst viel JSTL benutzen, da es afaik wesentlich flexibler ist.
Dies funktioniert also:


```
<bean:define id="events" 
		name="app_attendants_data" 
		property="sperrereignisse" 
		type="java.util.Set"/>
<logic:iterate id="item" name="events">
	${item.vermerk}

</logic:iterate>
```


Jenes hingegen nicht mehr:


```
<c:forEach items="${events4}" var="app_attendants_data.sperrereignisse" varStatus="status">
   ${events4.vermerk}

</c:forEach>
```


Irgendwelche Ideen, warum?


----------



## Gast (10. Dez 2005)

Schau dir doch mal die Beschreibung zur jstl-for each loop an. 

items ist die collection (${strutsForm.PersonenListe}) und var ist die schleifen variable.  Z.B. person

Den Namen der Person zeigst du dann im Rupf mit ${person.name}  an.


----------



## Till (10. Dez 2005)

Okay, danke ich werde Montag in der Firma noch mal drüber schauen und mich wieder melden.

Gruß,
Till


----------



## Gast (11. Dez 2005)

Hallo,

wenn du das beruflich machst, dann solltest du statt übelstem try and error vielleicht mal etwas kluger vorgehen. Dazu gehört auch sich die Dokumentation anzuschauen.

http://java.sun.com/products/jsp/jstl/
http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html


----------



## Gast (11. Dez 2005)

p.s. das bean:define kannst du dir bi der jstl sparen.


----------



## Till (12. Dez 2005)

Hallo Forum + Gäste,

mein Fehler war an sich klar: Man sollte var+items nicht vertauschen. Der Kommentar mit try+error stimmt auch; leider stehe ich ziemlich unter Zeitdruck, was manchmal eine kluge Vorgehensweise aushebelt.
Trotz alldem hat mir die Doku nicht weitergeholfen; jene Schleife ist im Sinne der API und produziert trotzdem keine Ausgabe (obwohl "${app_attendants_data.sperrereignisse}" beide Einträge zeigt).

Die Collection ist übrigens eine echte java.util.Collection (Im Bean intern als HashSet gehandhabt, was aber laut Doku gehen soll)


```
${app_attendants_data.sperrereignisse}

<c:forEach items="${app_attendants_data.sperrereignisse}" var="current">
   current: ${current.vermerk} ${current}

</c:forEach>
```



```
[db.pojos.SperrEreignis@1b2bcc2, db.pojos.SperrEreignis@ef1a78]
current:
```


Ich werde natürlich weiter lesen, bitte nehmt hier nur zur Kenntnis, dass hinter dem nun korrigierten Statement noch ein prinzipielles Problem steckt.

Vielen Dank nochmal für die Antworten

Till


----------



## Till (12. Dez 2005)

Ich habe jetzt die Lösung... obwohl ich schon erfolgreich die c-library verbaut habe und mich auch mit den taglib-uris beschäftigt habe, vergaß ich doch, die library einzubinden:


```
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
```

Ich schätze, ich habe einfach den Wald vor Bäumen nicht mehr gesehen.

Danke trotzdem an alle, die über mein Problem nachgedacht haben und insbesondere auch Gast, der mit seiner Einschätzung natürlich Recht hat!

Gruß und ne erfolgreiche Woche an alle ;-)

Tillinger


----------

