Map (SP-Tag): Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: ==Name== <sp:map> - Erzeugt oder ändert eine Map ==Syntax== <sp:map name="myMap" action="put|remove|new|clear" key="keyname" value="come back at ${myTime}" /> <sp:...)
 
 
(30 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
  
 
==Syntax==
 
==Syntax==
 +
<source lang="xml">
 
  <sp:map name="myMap" action="put|remove|new|clear" key="keyname" value="come back at ${myTime}" />
 
  <sp:map name="myMap" action="put|remove|new|clear" key="keyname" value="come back at ${myTime}" />
 
+
</source>
 +
<source lang="xml">
 
  <sp:map name="myMap" action="put|remove|new|clear" key="keyname" object="myVariable" />
 
  <sp:map name="myMap" action="put|remove|new|clear" key="keyname" object="myVariable" />
 +
</source>
  
 
==Beschreibung==
 
==Beschreibung==
Mit dem Map-Tag können [[Maps]] erzeugt und geändert werden. Eine Map ist eine Liste von Schlüssel/Werte-Paaren.Eine Map kann entweder über [[sp:loop]] durchlaufen oder die einzelnen Werte können über den Schlüssel erfragt werden. Der Name des Schlüssels kann, getrennt durch einen Punkt an den Map-Namen angehängt werden um den Wert Bespielsweise mit [[sp:print]] auszugeben.
+
Mit dem Map-Tag können [[Map|Maps]] erzeugt und geändert werden. Eine Map ist eine Liste von Schlüssel/Werte-Paaren und kann entweder über [[sp:loop]] durchlaufen werden oder die einzelnen Werte über den Schlüssel erfragen. Der Name des Schlüssels kann, getrennt durch einen Punkt an dem Map-Namen, angehängt werden um den Wert bespielsweise mit [[sp:print]] auszugeben.
 +
<source lang="xml">
 +
<sp:print name="myMap.keyname"/>
 +
</source>
 +
 
 +
Sieht man die Schlüssel einer Map als Attribut eines Objektes, kann sie zur Erzeugung von komplexen Objekten dienen. Da Maps auch Maps enthalten können, sind auch verschachtelte Strukturen möglich. Um verschachtelte Maps zu erzeugen, darf der Attributname Punkte enthalten. Der Map-Tag erzeugt für jeden mit einem Punkt getrennten Namen eine Map in der Map.
 +
<source lang="xml">
 +
<sp:map name="myMap.mySubMap" key="keyname" value="text"/>
 +
</source>
  
<sp:print name="myMap.keyname"/>
 
  
Sieht man die Schlüssel einer Map als Attribute eines Objektes, kann sie zur Erzeugung von komplexen Objekten dienen. Da Maps auch Maps enthalten können, sind auch verschachtelte Strukturen möglich. Um verschachtelte Maps zu erzeugen, darf das Attribute name Punkte enthalten. Der Map-Tag erzeugt für jeden mit einem Punkt getrennten Namen eine Map in der Map.
+
'''(Ab Version 2.0.3)'''
  
  <sp:map name="myMap.mySubMap" key="keyname" value="text"/>
+
Werte können über die Attribute <code>value</code> oder <code>object</code> gesetzt werden. Alternativ ist es auch möglich den Wert im Body des Tags zu setzen. Hierbei wird zunächst der Body ausgeführt und das Ergebnis verwendet.
 +
<source lang="xml">
 +
  <sp:map name="myMap.mySubMap" key="keyname" action="put"><sp:print name="var"/></sp:map>
 +
</source>
  
 
==Attribute==
 
==Attribute==
 
{| class="prettytable sortable"
 
{| class="prettytable sortable"
 
|- class="hintergrundfarbe1"
 
|- class="hintergrundfarbe1"
! Name || Type || Required || Default
+
! Name || Type || Required || Default || ab IES Version
 
|-
 
|-
 
| <code>name</code>
 
| <code>name</code>
| [[Variable|Variablename]]
+
| [[Variable]]
 
| Ja
 
| Ja
 
| None
 
| None
 +
| 1
 
|-  
 
|-  
 
| <code>action</code>
 
| <code>action</code>
| [[String]]
+
| [[Text]]
 
| Ja
 
| Ja
 
| None
 
| None
 +
| 1
 
|-  
 
|-  
 
| <code>key</code>
 
| <code>key</code>
| [[Variable|Variablename]]
+
| [[Variable]]
 
| Ja, für put
 
| Ja, für put
 
| None
 
| None
 +
| 1
 
|-  
 
|-  
 
| <code>value</code>
 
| <code>value</code>
| [[String]]
+
| [[Text]]
| Ja, für put
+
| Ja oder object oder im Body des Tags, für put
 
| None
 
| None
 +
| 1
 
|-  
 
|-  
 
| <code>object</code>
 
| <code>object</code>
| [[Variable|Variablename]]
+
| [[Attribute]]
| Ja, für put
+
| Ja oder value oder im Body des Tags, für put
 +
| None
 +
| 1
 +
|-
 +
| <code>expression</code>
 +
| [[Expression]]
 +
| Ja oder value bzw. object bzw. condition oder im Body des Tags
 +
| None
 +
| 2.11
 +
|-
 +
| <code>condition</code>
 +
| [[Condition]]
 +
| Ja oder value bzw. object bzw. expresson oder im Body des Tags
 +
| None
 +
| 2.11
 +
|-
 +
| <code>default</code>
 +
| [[Text]]
 +
| Nein
 
| None
 
| None
 +
| 2.13
 
|-  
 
|-  
 
| <code>locale</code>
 
| <code>locale</code>
Zeile 50: Zeile 86:
 
| Nein
 
| Nein
 
| None
 
| None
 +
| 1
 
|-  
 
|-  
 
| <code>scope</code>
 
| <code>scope</code>
Zeile 55: Zeile 92:
 
| Nein
 
| Nein
 
| request
 
| request
 +
| 1
 +
|-
 +
| <code>overwrite</code>
 +
| [[Condition]]
 +
| Nein
 +
| None
 +
| 2.12.9
 
|}
 
|}
  
Zeile 61: Zeile 105:
  
 
;<code>action</code>
 
;<code>action</code>
:Aktion, die ausgeführt werden soll. Es existieren die Aktionen put, remove, new und clear.
+
:Aktion, die ausgeführt werden soll. Die folgenden Aktionen sind möglich: put, remove, new und clear.
 
:;put
 
:;put
::Träg ein neues Schlüssel-Werte-Paar ein die Map ein. Existiert schon ein Eintrag mit dem angegebenen Schlüssel, so wird der alter Wert überschrieben.
+
::Träg ein neues Schlüssel-Werte-Paar in die Map ein. Existiert schon ein Eintrag mit dem angegebenen Schlüssel, wird der alter Wert überschrieben.
 +
:;putNotEmpty
 +
::Träg ein neues Schlüssel-Werte-Paar in die Map ein, wenn der Wert nicht null oder ein Leerstring ist. Existiert schon ein Eintrag mit dem angegebenen Schlüssel, wird der alter Wert überschrieben.
 +
:;putAll
 +
::Bei dieser Aktion muss eine weitere Map übergeben werden. Alle Einträge werden in die Map übernommen.
 +
:;merge
 +
::Bei dieser Aktion muss eine weitere Map übergeben werden. Alle Einträge werden in die Map übernommen. Enthält die Map aber weitere Map-Strukturen, werden diese zusammengeführt. Bei der Merge-Aktion werden immer Kopien der Daten in die Map übernommen. Bei putAll sind es immer Referenzen. Wie bei putAll werden alle Eintäge in die Map übernommen.
 
:;remove
 
:;remove
::Löscht das Schlüssel-Werte-Paar mit dem in key angegebenen Schlüssel aus der Map.
+
::Löscht das Schlüssel-Werte-Paar mit dem in <code>key</code> angegebenen Schlüssel aus der Map.
 
:;new
 
:;new
 
::Erzeugt eine neue Map
 
::Erzeugt eine neue Map
Zeile 78: Zeile 128:
  
 
;<code>object</code>
 
;<code>object</code>
:Kennzeichnet das Objekt, der eingefügt, ersetzt oder gelöscht werden soll.
+
:Kennzeichnet das Objekt, das eingefügt, ersetzt oder gelöscht werden soll.
 +
 
 +
;<code>expression</code>
 +
:Die [[Expression]] wird ausgewertet und als Wert in die Variable geschrieben.
 +
 
 +
;<code>condition</code>
 +
:Die [[Condition]] wird ausgewertet und als Bedingung in die Variable geschrieben.
 +
 
 +
;<code>default</code>
 +
:Der Text, der verwendet wird, wenn die Inhalte von value, expression und body leer sind.
  
 
;<code>locale</code>
 
;<code>locale</code>
:Dieses Attribut dient zur Auswahl der zu verwendende Sprache bei mehrsprachiger Variablen.
+
:Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
  
 
;<code>scope</code>
 
;<code>scope</code>
:Namensraum, in dem die Variable definiert ist. Für diesen Tag ist der Page- und Request-Scope mögiich (page, request).
+
:[[Scope|Namensraum]], in dem die Variable definiert ist. Für diesen Tag ist der Page- und Request-Scope möglich (<code>page</code>, <code>request</code>).
  
 +
;<code>overwrite</code>
 +
:Bestimmt, ob eine evtl. vorhandene Variable überschrieben werden soll. true bzw. false.
  
 
==Beispiele==
 
==Beispiele==
  
====Einfache Schlüssel/Werte Paare====
+
===Einfache Schlüssel/Werte Paare===
  
 
Template Quelltext
 
Template Quelltext
 
 
<source lang="xml">
 
<source lang="xml">
<sp:map name="frequencies" action="put" key="C" value="261.63"/>
+
<sp:map name="frequencies" action="put" key="C" value="261.63"/>
<sp:map name="frequencies" action="put" key="D" value="293.66"/>
+
<sp:map name="frequencies" action="put" key="D" value="293.66"/>
<sp:map name="frequencies" action="put" key="E" value="329.63"/>
+
<sp:map name="frequencies" action="put" key="E" value="329.63"/>
<sp:map name="frequencies" action="put" key="F" value="349.23"/>
+
<sp:map name="frequencies" action="put" key="F" value="349.23"/>
<sp:map name="frequencies" action="put" key="G" value="392.00"/>
+
<sp:map name="frequencies" action="put" key="G" value="392.00"/>
<sp:map name="frequencies" action="put" key="A" value="440.00"/>
+
<sp:map name="frequencies" action="put" key="A" value="440.00"/>
<sp:map name="frequencies" action="put" key="H" value="493.88"/>
+
<sp:map name="frequencies" action="put" key="H" value="493.88"/>
  
Auf einzelne Werte zugreifen:<br>
+
Auf einzelne Werte zugreifen:<br>
Frequenz von D: <sp:print name="frequencies.D"/> Hz
+
Frequenz von D: <sp:print name="frequencies.D"/> Hz
  
Die Map in einer Schleife durchlaufen<br>
+
Die Map in einer Schleife durchlaufen<br>
Frequenzen der Tonleiter
+
Frequenzen der Tonleiter
<sp:loop collection="frequencies" item="f">
+
<sp:loop collection="frequencies" item="f">
  <sp:print name="f.key"/> = <sp:print name="f.value"/> Hz
+
  <sp:print name="f.key"/> = <sp:print name="f.value"/> Hz
</sp:loop>
+
</sp:loop>
 
</source>
 
</source>
  
 
Ausgabe
 
Ausgabe
 
+
<source lang="text">
Auf einzelne Werte zugreifen:
+
Auf einzelne Werte zugreifen:
Frequenz von D: 293.66 Hz
+
Frequenz von D: 293.66 Hz
 
   
 
   
Die Map in einer Schleife durchlaufen
+
Die Map in einer Schleife durchlaufen
Frequenzen der Tonleiter
+
Frequenzen der Tonleiter
C = 261.63 Hz
+
C = 261.63 Hz
D = 293.66 Hz
+
D = 293.66 Hz
E = 329.63 Hz
+
E = 329.63 Hz
F = 349.23 Hz
+
F = 349.23 Hz
G = 392.00 Hz
+
G = 392.00 Hz
A = 440.00 Hz
+
A = 440.00 Hz
H = 493.88 Hz
+
H = 493.88 Hz
 +
</source>
  
 
+
===Objekte mit einer Map erzeugen===
====Objekte mit einer Map erzeugen====
 
  
 
Template Quelltext
 
Template Quelltext
 
 
<source lang="xml">
 
<source lang="xml">
<sp:map name="person" action="put" key="lastname" value="Müller"/>
+
<sp:map name="person" action="put" key="lastname" value="Müller"/>
<sp:map name="person" action="put" key="firstname" value="Max"/>
+
<sp:map name="person" action="put" key="firstname" value="Max"/>
<sp:map name="person" action="put" key="email" value="max@mueller.de"/>
+
<sp:map name="person" action="put" key="email" value="max@mueller.de"/>
  
<sp:map name="person.address" action="put" key="street" value="Meierstr. 11"/>
+
<sp:map name="person.address" action="put" key="street" value="Meierstr. 11"/>
<sp:map name="person.address" action="put" key="zip" value="12345"/>
+
<sp:map name="person.address" action="put" key="zip" value="12345"/>
<sp:map name="person.address" action="put" key="city" value="Musterstadt"/>
+
<sp:map name="person.address" action="put" key="city" value="Musterstadt"/>
  
Adresse:
+
Adresse:
<sp:print name="person.firstname"/> <sp:print name="person.lastname"/> (<sp:print name="person.email"/>)
+
<sp:print name="person.firstname"/> <sp:print name="person.lastname"/> (<sp:print name="person.email"/>)
<sp:print name="person.address.street"/>
+
<sp:print name="person.address.street"/>
<sp:print name="person.address.zip"/> <sp:print name="person.address.city"/>
+
<sp:print name="person.address.zip"/> <sp:print name="person.address.city"/>
 
</source>
 
</source>
  
 
Ausgabe
 
Ausgabe
 
+
<source lang="text">
Adresse:
+
Adresse:
Max Müller (max@mueller.de)
+
Max Müller (max@mueller.de)
Meierstr. 11
+
Meierstr. 11
12345 Musterstadt
+
12345 Musterstadt
 +
</source>
  
 
<noinclude>
 
<noinclude>
 
[[Category:SP-Tags]]
 
[[Category:SP-Tags]]
 +
[[Category:Qualität_des_Codes_prüfen]]
 
</noinclude>
 
</noinclude>

Aktuelle Version vom 12. August 2015, 15:41 Uhr

Name

<sp:map> - Erzeugt oder ändert eine Map

Syntax

 <sp:map name="myMap" action="put|remove|new|clear" key="keyname" value="come back at ${myTime}" />
 <sp:map name="myMap" action="put|remove|new|clear" key="keyname" object="myVariable" />

Beschreibung

Mit dem Map-Tag können Maps erzeugt und geändert werden. Eine Map ist eine Liste von Schlüssel/Werte-Paaren und kann entweder über sp:loop durchlaufen werden oder die einzelnen Werte über den Schlüssel erfragen. Der Name des Schlüssels kann, getrennt durch einen Punkt an dem Map-Namen, angehängt werden um den Wert bespielsweise mit sp:print auszugeben.

 <sp:print name="myMap.keyname"/>

Sieht man die Schlüssel einer Map als Attribut eines Objektes, kann sie zur Erzeugung von komplexen Objekten dienen. Da Maps auch Maps enthalten können, sind auch verschachtelte Strukturen möglich. Um verschachtelte Maps zu erzeugen, darf der Attributname Punkte enthalten. Der Map-Tag erzeugt für jeden mit einem Punkt getrennten Namen eine Map in der Map.

 <sp:map name="myMap.mySubMap" key="keyname" value="text"/>


(Ab Version 2.0.3)

Werte können über die Attribute value oder object gesetzt werden. Alternativ ist es auch möglich den Wert im Body des Tags zu setzen. Hierbei wird zunächst der Body ausgeführt und das Ergebnis verwendet.

 <sp:map name="myMap.mySubMap" key="keyname" action="put"><sp:print name="var"/></sp:map>

Attribute

Name Type Required Default ab IES Version
name Variable Ja None 1
action Text Ja None 1
key Variable Ja, für put None 1
value Text Ja oder object oder im Body des Tags, für put None 1
object Attribute Ja oder value oder im Body des Tags, für put None 1
expression Expression Ja oder value bzw. object bzw. condition oder im Body des Tags None 2.11
condition Condition Ja oder value bzw. object bzw. expresson oder im Body des Tags None 2.11
default Text Nein None 2.13
locale Locale Nein None 1
scope Scope Nein request 1
overwrite Condition Nein None 2.12.9
name
Name der Map. Ein Punkt trennt die Namen für verschachtelte Maps.
action
Aktion, die ausgeführt werden soll. Die folgenden Aktionen sind möglich: put, remove, new und clear.
put
Träg ein neues Schlüssel-Werte-Paar in die Map ein. Existiert schon ein Eintrag mit dem angegebenen Schlüssel, wird der alter Wert überschrieben.
putNotEmpty
Träg ein neues Schlüssel-Werte-Paar in die Map ein, wenn der Wert nicht null oder ein Leerstring ist. Existiert schon ein Eintrag mit dem angegebenen Schlüssel, wird der alter Wert überschrieben.
putAll
Bei dieser Aktion muss eine weitere Map übergeben werden. Alle Einträge werden in die Map übernommen.
merge
Bei dieser Aktion muss eine weitere Map übergeben werden. Alle Einträge werden in die Map übernommen. Enthält die Map aber weitere Map-Strukturen, werden diese zusammengeführt. Bei der Merge-Aktion werden immer Kopien der Daten in die Map übernommen. Bei putAll sind es immer Referenzen. Wie bei putAll werden alle Eintäge in die Map übernommen.
remove
Löscht das Schlüssel-Werte-Paar mit dem in key angegebenen Schlüssel aus der Map.
new
Erzeugt eine neue Map
clear
Löscht den Inhalt der Map
key
Schlüssel, über den auf die Werte der Map zugegriffen werden soll.
value
Kennzeichnet den Wert, der eingefügt, ersetzt oder gelöscht werden soll.
object
Kennzeichnet das Objekt, das eingefügt, ersetzt oder gelöscht werden soll.
expression
Die Expression wird ausgewertet und als Wert in die Variable geschrieben.
condition
Die Condition wird ausgewertet und als Bedingung in die Variable geschrieben.
default
Der Text, der verwendet wird, wenn die Inhalte von value, expression und body leer sind.
locale
Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
scope
Namensraum, in dem die Variable definiert ist. Für diesen Tag ist der Page- und Request-Scope möglich (page, request).
overwrite
Bestimmt, ob eine evtl. vorhandene Variable überschrieben werden soll. true bzw. false.

Beispiele

Einfache Schlüssel/Werte Paare

Template Quelltext

<sp:map name="frequencies" action="put" key="C" value="261.63"/>
<sp:map name="frequencies" action="put" key="D" value="293.66"/>
<sp:map name="frequencies" action="put" key="E" value="329.63"/>
<sp:map name="frequencies" action="put" key="F" value="349.23"/>
<sp:map name="frequencies" action="put" key="G" value="392.00"/>
<sp:map name="frequencies" action="put" key="A" value="440.00"/>
<sp:map name="frequencies" action="put" key="H" value="493.88"/>

Auf einzelne Werte zugreifen:<br>
Frequenz von D: <sp:print name="frequencies.D"/> Hz

Die Map in einer Schleife durchlaufen<br>
Frequenzen der Tonleiter
<sp:loop collection="frequencies" item="f">
  <sp:print name="f.key"/> = <sp:print name="f.value"/> Hz
</sp:loop>

Ausgabe

Auf einzelne Werte zugreifen:
Frequenz von D: 293.66 Hz
 
Die Map in einer Schleife durchlaufen
Frequenzen der Tonleiter
C = 261.63 Hz
D = 293.66 Hz
E = 329.63 Hz
F = 349.23 Hz
G = 392.00 Hz
A = 440.00 Hz
H = 493.88 Hz

Objekte mit einer Map erzeugen

Template Quelltext

<sp:map name="person" action="put" key="lastname" value="Müller"/>
<sp:map name="person" action="put" key="firstname" value="Max"/>
<sp:map name="person" action="put" key="email" value="max@mueller.de"/>

<sp:map name="person.address" action="put" key="street" value="Meierstr. 11"/>
<sp:map name="person.address" action="put" key="zip" value="12345"/>
<sp:map name="person.address" action="put" key="city" value="Musterstadt"/>

Adresse:
<sp:print name="person.firstname"/> <sp:print name="person.lastname"/> (<sp:print name="person.email"/>)
<sp:print name="person.address.street"/>
<sp:print name="person.address.zip"/> <sp:print name="person.address.city"/>

Ausgabe

Adresse:
Max Müller (max@mueller.de)
Meierstr. 11
12345 Musterstadt