Iterator (SP-Code): Unterschied zwischen den Versionen
Zeile 76: | Zeile 76: | ||
;<code>item</code> | ;<code>item</code> | ||
− | :Die in <code>collection</code> angegebene Liste wird Element für Element durchlaufen. Mit dem in diesem Attribut angegebenen Namen kann auf das aktuelle Element der Liste zugegriffen werden. | + | :Die in <code>collection</code> angegebene Liste wird Element für Element durchlaufen. Mit dem in diesem Attribut angegebenen Namen kann auf das aktuelle Element der Liste zugegriffen werden. Für das aktuelle Element können noch Zusätzliche Informationen die den Schleifendurchlauf betreffen abgefragt werden (siehe [[IteratorItem]]). |
;<code>min</code> | ;<code>min</code> |
Version vom 25. Juni 2008, 08:37 Uhr
Name
<sp:iterator> - Erzeugt Wiederholfelder
Syntax
<sp:iterator collection="sp_mainIterator">
...
</sp:iterator>
Beschreibung
Der Iterator-Tag erzeugt Wiederholfelder für Eingabemasken. Alle Eingabefelder innerhalb von sp:iterator
, die mit sp- und spt- Tags erzeugt wurden, bilden einen Listen-Eintrag. Die Eingabefelder werden wiederholt und bilden so eine Liste. sp:iterator
-Tags können weitere sp:iterator
-Tags enthalten, um verschachtelte Listen zu erzeugen. Auf die Liste können mit Hilfe von Http-Request-Parametern Aktionen ausgeführt werden. Welche Aktion ausgeführt werden soll, wird mit SYS_INFE_listAction
angegeben. Mit SYS_INFE_listID
wird das Element bestimmt für das die Aktion gilt. Ein gütiger Wert für SYS_INFE_listID
ist Beispielsweise sp_mainIterator[2]
. Für ein in mehreren sp:iterator
verschachteltes Element ist ein gültiger Wert beispielsweise sp_mainIterator[3].sp_subIterator[2]
.
Folgende Aktionen sind möglich:
- swapList
- Vertauscht die Reihfolge der Listen-Elemente. Das erste Element wird zum letzten das zweite Element zum zweitletzten, usw., das letzte Element wird zum ersten. Für diese Aktion wird
SYS_INFE_listID
nicht benötigt.
- addItem
- Fügt ein leeres Element an das Ende der Liste. Für diese Aktion wird
SYS_INFE_listID
nicht benötigt.
- moveItemDown
- Verschiebt das mit
SYS_INFE_listID
angegebene Elemente um eine Position nach unten. Ist das Element das letzte der Liste, so wird es an die erste Stelle der Liste verschoben.
- moveItemUp
- Verschiebt das mit
SYS_INFE_listID
angegebene Element um eine Position nach oben. Ist das Element das erste der Liste, so wird es an die letzt Stelle der Liste verschoben.
- removeItem
- Löscht das mit
SYS_INFE_listID
angegebene Element aus der Liste.
- insertItem
- Fügt ein leeres Element an die mit
SYS_INFE_listID
angegebene Stelle ein. Das uhrsprüngliche Element an dieser Stelle wird um eine Position nach unten verschoben.
sp:iterator
wird so oft durchlaufen, wie die Anzahl der Element der Liste, die mit collection
angegebene wurde. Existiert die Liste (noch) nicht, so wird sp:iterator
nicht durchlaufen. Um eine Liste zu erzeugen, kann mit addItem
eine neue Liste mit einem Element erzeugt werden. Eine weitere Möglichkeit einen oder mehrere Iteratordurchläufe zu erzwingen ist die Angabe des min
-Attributes, das bestimmt wieviele Listenelement minimal ausgegeben werden sollen, auch wenn noch keine Liste existiert.
Da in den meisten Fällen ein Iteratordurchlauf (min = 1) gewünscht ist, wenn noch keine Liste existiert, sind die Listenaktionen für diesen Fall optimiert. Daraus ergeben sich folgende Sonderfälle:
- Die Liste existiert noch nicht, aber durch min = 1 wird der Iterator einmal durchlaufen. Wenn die Felder des Iterators nicht gefüllt werden, wird keine Liste erzeugt und kein leeres Element angelegt. Diese Verhalten gilt nur für die Listen, die mit SYS_INFE_emptyList als leer markiert wurden. Mehrere Listen werden durch Kommata getrennt. Gültige Werte für SYS_INFE_emptyList sind z.B.
101020100000020322-1015:sp_mainIterator
oder101020100000020322-1015:sp_mainIterator[2].sp_subIterator
. - addItem und insertItem erzeugen zwei leere Listenelemente, wenn noch keine Liste existiert.
- Es gibt keine leeren Listen. Wird das letzte Element der Liste gelöscht, wird die gesammte Liste gelöscht.
Die Standarderweiterung von sp:iterator
ist spt:iterator
. Dieser Tag erzeugt Rahmen und Button, mit denen die Iterator-Funktionen ausgeführt werden können.
Attribute
Name | Type | Required | Default | ab IES Version |
---|---|---|---|---|
collection
|
Attribute | Ja | None | 1 |
item
|
Variable | Nein | None | 1 |
min
|
Number | Nein | 0 | 1 |
max
|
Number | Nein | None | 1 |
collection
- Die zu iterierende Liste. Dieses Attribut entspricht dem
name
-Attribut des spt:iterator-Tags.
item
- Die in
collection
angegebene Liste wird Element für Element durchlaufen. Mit dem in diesem Attribut angegebenen Namen kann auf das aktuelle Element der Liste zugegriffen werden. Für das aktuelle Element können noch Zusätzliche Informationen die den Schleifendurchlauf betreffen abgefragt werden (siehe IteratorItem).
min
- Die Anzahl der mindestens zu iterierenden Elemente. Enthält die zu iterierende Liste weniger Elemente als in
min
angegeben werden so viele leere Elemente hinzugefügt, bis mindestens die inmin
angegebene Anzahl von Elementen vorhanden ist.
max
- Die Anzahl der maximal zu iterierenden Elemente. Enthält die zu iterierende Liste mehr Elemente als in
max
angegeben, so wird die Anzahl der Elemente auf die Anzahlmax
gekürzt.
Beispiele
Einfügen von Textfeldern
Template Quelltext
<sp:iterator collection="sp_mainIterator" min="1">
<p>
Text<br>
<sp:text name="sp_title"/><br>
</p>
</sp:iterator>
Einfügen von Textfeldern mit Item
Template Quelltext
<sp:iterator collection="sp_mainIterator" item="it" min="1">
<p>
Text<br>
<sp:print name="it.sp_title"/><br>
<sp:text name="sp_title"/><br>
</p>
</sp:iterator>