Beispiel: JSP-Tag tsx:repeat für die Iteration durch Ergebnismengen verwenden (veraltet)
Mit dem Tag <tsx:repeat> wird eine Iteration für eine Ergebnismenge durchgeführt. Die Ergebnismenge ist in einer Bean enthalten. Die Bean kann eine statische Bean sein, z. B. eine Bean, die mit dem Datenbankassistenten von IBM® WebSphere Studio erstellt wurde. Es kann sich aber auch um eine dynamisch generierte Bean handeln, z. B. eine Bean, die von der <tsx:dbquery>-Syntax generiert wurde.

Die folgende Tabelle ist eine grafische Darstellung des Inhalts der Bean myBean:
Spalte | col1 | col2 | col3 |
---|---|---|---|
row0 | friends | Romans | countrymen |
row1 | bacon | lettuce | tomato |
row2 | May | June | July |
Einige Bemerkungen zur Bean:
- Die Spaltennamen in der Datenbanktabelle werden die Eigenschaftsnamen der Bean. Der Abschnitt <tsx:dbquery> beschreibt ein Verfahren, mit dem die Spaltennamen verschiedenen Eigenschaftsnamen zugeordnet werden.
- Die Bean-Eigenschaften werden indexiert. Beispiel: myBean.get(Col1(row2)) gibt May zurück.
- Die Abfrageergebnisse befinden sich in den Zeilen. Der Tag <tsx:repeat> wird, ausgehend von der Anfangszeile, für die Zeilen wiederholt.
In der folgenden Tabelle wird die Verwendung des Tag <tsx:repeat> für das Iterieren einer statischen Bean mit einer dynamisch generierten Bean verglichen:
Beispiel für statische Bean | Beispiel für <tsx:repeat>-Bean |
---|---|
myBean.class // Code zum Abrufen einer Verbindung // Code zum Abrufen der Daten Select * from myTable; // Code zum Schließen der VerbindungJSP-Datei <tsx:repeat index=abc> <tsx:getProperty name="myBean" property="col1(abc)" /> </tsx:repeat> Anmerkung:
|
JSP-Datei<tsx:dbconnect id="conn" userid="alice"passwd="test" url="jdbc:db2:sample" driver="COM.ibm.db2.jdbc.app.DB2Driver"> </tsx:dbconnect > <tsx:dbquery id="dynamic" connection="conn" > Select * from myTable; </tsx:dbquery> <tsx:repeat index=abc> <tsx:getProperty name="dynamic" property="col1(abc)" /> </tsx:repeat> Anmerkung:
|
Implizite und explizite Indexierung
Die Beispiele 1, 2 und 3 veranschaulichen, wie das Tag <tsx:repeat> verwendet wird. Die Beispiele erstellen dieselbe Ausgabe, wenn alle indexierten Eigenschaften aus maximal 300 Elementen bestehen. Sind mehr als 300 Elemente vorhanden, zeigen die Beispiele 1 und 2 alle Elemente an, während Beispiel 3 nur die ersten 300 Elemente anzeigt.
Beispiel 1 veranschaulicht die implizite Indexierung mit dem Standardanfangsindex und dem Standardendindex. Die Bean mit der geringsten Anzahl indexierter Eigenschaften begrenzt die Anzahl der Schleifenwiederholungen.
<table> <tsx:repeat> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="city" /> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="address" /> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="telephone" /> </tr></td> </tsx:repeat> </table>
Beispiel 2 veranschaulicht die Indexierung, den Anfangsindex und den Endindex:
<table> <tsx:repeat index=myIndex start=0 end=2147483647> <tr><td><tsx:getProperty name="serviceLocationsQuery" property=city(myIndex) /> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property=address(myIndex) /> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property=telephone(myIndex) /> </tr></td> </tsx:repeat> </table>
Beispiel 3 veranschaulicht die explizite Indexierung und den Endindex mit dem impliziten Anfangsindex. Obwohl das Indexattribut angegeben ist, können Sie die indexierte Eigenschaft "city" noch implizit indexieren, da der (myIndex)-Tag nicht erforderlich ist.
<table> <tsx:repeat index=myIndex end=299> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="city" /t> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="address(myIndex)" /> </tr></td> <tr><td><tsx:getProperty name="serviceLocationsQuery" property="telephone(myIndex)" /> </tr></td> </tsx:repeat> </table>
<tsx:repeat>-Blöcke verschachteln
Sie können <tsx:repeat>-Blöcke verschachteln. Jeder Block wird separat indexiert. Diese Funktion ist nützlich für die Verzahnung von Eigenschaften zweier Beans bzw. Eigenschaften, die untergeordnete Eigenschaften haben. Im Beispiel werden zwei <tsx:repeat>-Blöcke verschachtelt, um die Liste der auf den CDs enthaltenen Titel im Warenkorb des Benutzers anzuzeigen.
<tsx:repeat index=cdindex> <h1><tsx:getProperty name="shoppingCart" property=cds.title /></h1> <table> <tsx:repeat> <tr><td><tsx:getProperty name="shoppingCart" property=cds(cdindex).playlist /> </td></tr> </tsx:repeat> </table> </tsx:repeat>