Condition (SP-Tag): Unterschied zwischen den Versionen
K (hat „Sp:condition“ nach „Condition (SP-Tag)“ verschoben) |
K (Hob den Schutz von „Condition (SP-Tag)“ auf) |
||
(14 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Name== | ==Name== | ||
− | <sp:condition> - | + | <sp:condition>, <sp:if>, <sp:elseif>, <sp:else> - Bedingungen prüfen |
==Syntax== | ==Syntax== | ||
− | <source lang=" | + | <source lang="php"> |
− | <sp: | + | <sp:if condition="${a} > ${b}"> |
+ | ... | ||
+ | </sp:if> | ||
+ | |||
+ | <sp:condition> | ||
+ | <sp:if condition="${a} <= 0"> | ||
+ | ... | ||
+ | </sp:if> | ||
+ | <sp:elseif condition="${a} > 0 && ${a} < 10"> | ||
+ | ... | ||
+ | </sp:elseif> | ||
+ | <sp:elseif condition="${a} >= 10 && ${a} < 100"> | ||
+ | ... | ||
+ | </sp:elseif> | ||
+ | <sp:else> | ||
+ | ... | ||
+ | </sp:else> | ||
+ | </sp:condition> | ||
</source> | </source> | ||
==Beschreibung== | ==Beschreibung== | ||
− | + | Die vier Tags ermöglichen es verschiedene Bedingungen abzufragen. Einfache Abfragen können direkt mit <code><sp:if></code> erstellt werden. Werden else- bzw. elseif-Bedingungen in einer Abfrage benötigt, muss die gesamte Abfrage-Struktur mit <code>sp:condition</code> umschlossen werden. Zu beachten ist hier, dass zwischen <code><sp:condition></code> und <code><sp:if></code> kein Text stehen darf. Das gleiche gilt für <code></sp:if></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:else></code> sowie <code></sp:else></code> und <code></sp:condition></code>. | |
+ | |||
+ | Es bestehen zwei Möglichkeiten zur Abfrage einer Bedingung. Zum einen können Sie mit dem <code>name</code>-Attribut in Verbindung mit <code>gt</code>, <code>gte</code>, <code>lt</code>, usw. die zu prüfende Bedingung angegeben. Zum anderen können Sie für komplexe Abfragen mit dem <code>condition</code>-Attribut komplexe Bedingungen formulieren. Innerhalb dieses Attributes können Ausdrücke beispielsweise wie folgt angegeben werden. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <sp:if condition="(${a} > ${b}) && ((${a} + 3) / 10 < ${b})}"> | ||
+ | .. | ||
+ | </sp:if> | ||
+ | </source> | ||
==Attribute== | ==Attribute== | ||
− | {| class="prettytable" | + | {| class="prettytable sortable" |
|- class="hintergrundfarbe1" | |- class="hintergrundfarbe1" | ||
! Name || Type || Required || Default || ab IES Version | ! Name || Type || Required || Default || ab IES Version | ||
|- | |- | ||
− | | <code> | + | | <code>name</code> |
+ | | [[Variable]] | ||
+ | | Ja oder <code>condition</code> | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>locale</code> | ||
+ | | [[Locale]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>isNull</code> | ||
+ | | [[Condition]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>ic</code> | ||
+ | | [[Condition]] | ||
+ | | Nein | ||
+ | | false | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>contains</code> | ||
+ | | [[Text]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>match</code> | ||
+ | | [[Regular-Expression]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>eq</code> | ||
| [[Attribute]] | | [[Attribute]] | ||
− | | | + | | Nein |
| None | | None | ||
| 1 | | 1 | ||
|- | |- | ||
− | | <code> | + | | <code>neq</code> |
− | | [[ | + | | [[Attribute]] |
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>gt</code> | ||
+ | | [[Attribute]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>gte</code> | ||
+ | | [[Attribute]] | ||
| Nein | | Nein | ||
| None | | None | ||
| 1 | | 1 | ||
|- | |- | ||
− | | <code> | + | | <code>lt</code> |
− | | [[ | + | | [[Attribute]] |
| Nein | | Nein | ||
| None | | None | ||
| 1 | | 1 | ||
|- | |- | ||
− | | <code> | + | | <code>lte</code> |
| [[Locale]] | | [[Locale]] | ||
+ | | Nein | ||
+ | | None | ||
+ | | 1 | ||
+ | |- | ||
+ | | <code>condition</code> | ||
+ | | [[Condition]] | ||
| Nein | | Nein | ||
| None | | None | ||
Zeile 40: | Zeile 119: | ||
|} | |} | ||
− | ;<code> | + | ;<code>name</code> |
− | : | + | :Variablenname eines Objektes das verglichen werden soll. |
+ | |||
+ | ;<code>locale</code> | ||
+ | :Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen. | ||
+ | |||
+ | ;<code>isNull</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> leer oder nicht vorhanden ist und <code>isNull</code> den Wert <code>true</code> hat. Wenn <code>isNull</code> den Wert <code>false</code> hat, ist die Bedingungen erfüllt, wenn die Variable in <code>name</code> nicht leer ist. | ||
+ | |||
+ | ;<code>ic</code> | ||
+ | :Die Auswertung soll "ignore case" durchgeführt werden. Bezieht sich auf <code>eq</code>, <code>neq</code>, <code>gt</code>, <code>gte</code>, <code>lt</code>, <code>lte</code>, und <code>contains</code>. | ||
+ | |||
+ | ;<code>contains</code> | ||
+ | :Zeichenkette, die in der Variablen enthalten sein soll. | ||
+ | |||
+ | ;<code>match</code> | ||
+ | :Regulärer Ausdruck, der in der Variablen enthalten sein soll. | ||
+ | |||
+ | ;<code>eq</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> gleich der Variable in <code>eq</code> ist. | ||
+ | |||
+ | ;<code>neq</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> ungleich der Variable in <code>neq</code> ist. | ||
+ | |||
+ | ;<code>gt</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> grösser als der Variable in <code>gt</code> ist. | ||
− | ;<code> | + | ;<code>gte</code> |
− | : | + | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> grösser oder gleich der Variable in <code>gte</code> ist. |
+ | |||
+ | ;<code>lt</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> kleiner als in der Variable in <code>lte</code> ist. | ||
+ | |||
+ | ;<code>lte</code> | ||
+ | :Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> kleiner oder gleich der Variable in <code>lte</code> ist. | ||
+ | |||
+ | ;<code>condition</code> | ||
+ | :Es wird eine [[Condition]] erwartet, die den Wert <code>true</code> oder <code>false</code> zurückliefert. | ||
==Beispiele== | ==Beispiele== | ||
− | ==== | + | ===isNull Prüfung=== |
+ | |||
+ | Template Quelltext | ||
+ | <source lang="xml"> | ||
+ | <sp:set name="foo" value="bar"/> | ||
+ | <sp:if name="foo"> foo ist definiert! | ||
+ | </sp:if> | ||
+ | |||
+ | <%-- kein Inhalt ist gleichbedeutend mit 'nicht definiert' --%> | ||
+ | |||
+ | <sp:set name="foo" value=""/> | ||
+ | |||
+ | <sp:if name="foo" isNull="true"> | ||
+ | foo ist nicht definiert! | ||
+ | </sp:if> | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | <source lang="text"> | ||
+ | foo ist definiert! | ||
+ | foo ist nicht definiert! | ||
+ | </source> | ||
+ | |||
+ | ===Einfache if Bedingung=== | ||
+ | |||
+ | Template Quelltext | ||
+ | <source lang="xml"> | ||
+ | <sp:set name="foo" value="bar"/> | ||
+ | <sp:if name="foo" eq="bar"> | ||
+ | foo hat den Wert <sp:print name="foo"/> | ||
+ | </sp:if> | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | <source lang="text"> | ||
+ | foo hat den Wert bar | ||
+ | </source> | ||
+ | |||
+ | ===Einfache if-elseif-else Bedingung=== | ||
Template Quelltext | Template Quelltext | ||
<source lang="xml"> | <source lang="xml"> | ||
− | + | <%-- | |
+ | Bei der Verwendung von if-elseif-else Konstrukten müssen die | ||
+ | einzelnen Tags in einem <sp:condition> zusammengefasst werden. | ||
+ | --%> | ||
+ | <sp:condition> | ||
+ | <sp:if name="foo" eq="foo"> | ||
+ | Ich bin im if-Zweig | ||
+ | </sp:if> | ||
+ | <sp:elseif name="foo" eq="barx"> | ||
+ | Ich bin im ersten ifelse-Zweig | ||
+ | </sp:elseif> | ||
+ | <sp:elseif name="foo" eq="bar"> | ||
+ | Ich bin im zweiten elseif-Zweig | ||
+ | </sp:elseif> | ||
+ | <sp:elseif condition="!isNull(${foo})"> | ||
+ | Ich bin im dritten elseif-Zweig | ||
+ | </sp:elseif> | ||
+ | <sp:else> | ||
+ | Ich bin im else-Zweig | ||
+ | </sp:else> | ||
+ | </sp:condition> | ||
+ | </source> | ||
+ | |||
+ | Ausgabe | ||
+ | <source lang="text"> | ||
+ | Ich bin im zweiten elseif-Zweig | ||
+ | </source> | ||
+ | |||
+ | ===Abfrage mit condition=== | ||
+ | |||
+ | Template Quelltext | ||
+ | <source lang="xml"> | ||
+ | <sp:if condition="${foo} == 'bar'"> | ||
+ | ${foo} == 'bar' liefert true | ||
+ | </sp:if> | ||
+ | |||
+ | <sp:set name="x" value="5"/> | ||
+ | <sp:set name="y" value="10"/> | ||
+ | |||
+ | <sp:if condition="(${x} + ${y}) == 15"> | ||
+ | Die Summe von x und y ist 15 | ||
+ | </sp:if> | ||
+ | |||
+ | <sp:if condition="${x} > 2 && ${x} < 20"> | ||
+ | x ist größer als 2 und kleiner als 20 | ||
+ | </sp:if> | ||
</source> | </source> | ||
Ausgabe | Ausgabe | ||
<source lang="text"> | <source lang="text"> | ||
− | + | ${foo} == 'bar' liefert true | |
+ | Die Summe von x und y ist 15 | ||
+ | x ist größer als 2 und kleiner als 20 | ||
</source> | </source> | ||
− | === | + | ===Prüfe Boolean=== |
Template Quelltext | Template Quelltext | ||
<source lang="xml"> | <source lang="xml"> | ||
− | + | <sp:set name="boolean" value="true"/> | |
+ | <sp:if condition="${boolean} == true"> | ||
+ | 1: boolean ist wahr. | ||
+ | </sp:if> | ||
+ | <sp:if condition="${boolean} == 'true'"> | ||
+ | 2: boolean ist wahr. | ||
+ | </sp:if> | ||
+ | <sp:if condition="${boolean} == 1"> | ||
+ | 3: boolean ist wahr. | ||
+ | </sp:if> | ||
</source> | </source> | ||
Ausgabe | Ausgabe | ||
<source lang="text"> | <source lang="text"> | ||
− | + | 2: boolean ist wahr. | |
</source> | </source> | ||
Zeile 75: | Zeile 281: | ||
<noinclude> | <noinclude> | ||
[[Category:SP-Tags]] | [[Category:SP-Tags]] | ||
− | |||
− | |||
[[Category:Qualität_des_Codes_prüfen]] | [[Category:Qualität_des_Codes_prüfen]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 24. Februar 2010, 12:29 Uhr
Name
<sp:condition>, <sp:if>, <sp:elseif>, <sp:else> - Bedingungen prüfen
Syntax
<sp:if condition="${a} > ${b}">
...
</sp:if>
<sp:condition>
<sp:if condition="${a} <= 0">
...
</sp:if>
<sp:elseif condition="${a} > 0 && ${a} < 10">
...
</sp:elseif>
<sp:elseif condition="${a} >= 10 && ${a} < 100">
...
</sp:elseif>
<sp:else>
...
</sp:else>
</sp:condition>
Beschreibung
Die vier Tags ermöglichen es verschiedene Bedingungen abzufragen. Einfache Abfragen können direkt mit <sp:if>
erstellt werden. Werden else- bzw. elseif-Bedingungen in einer Abfrage benötigt, muss die gesamte Abfrage-Struktur mit sp:condition
umschlossen werden. Zu beachten ist hier, dass zwischen <sp:condition>
und <sp:if>
kein Text stehen darf. Das gleiche gilt für </sp:if>
und <sp:elseif>
, </sp:elseif>
und <sp:elseif>
, </sp:elseif>
und <sp:else>
sowie </sp:else>
und </sp:condition>
.
Es bestehen zwei Möglichkeiten zur Abfrage einer Bedingung. Zum einen können Sie mit dem name
-Attribut in Verbindung mit gt
, gte
, lt
, usw. die zu prüfende Bedingung angegeben. Zum anderen können Sie für komplexe Abfragen mit dem condition
-Attribut komplexe Bedingungen formulieren. Innerhalb dieses Attributes können Ausdrücke beispielsweise wie folgt angegeben werden.
<sp:if condition="(${a} > ${b}) && ((${a} + 3) / 10 < ${b})}">
..
</sp:if>
Attribute
Name | Type | Required | Default | ab IES Version |
---|---|---|---|---|
name
|
Variable | Ja oder condition
|
None | 1 |
locale
|
Locale | Nein | None | 1 |
isNull
|
Condition | Nein | None | 1 |
ic
|
Condition | Nein | false | 1 |
contains
|
Text | Nein | None | 1 |
match
|
Regular-Expression | Nein | None | 1 |
eq
|
Attribute | Nein | None | 1 |
neq
|
Attribute | Nein | None | 1 |
gt
|
Attribute | Nein | None | 1 |
gte
|
Attribute | Nein | None | 1 |
lt
|
Attribute | Nein | None | 1 |
lte
|
Locale | Nein | None | 1 |
condition
|
Condition | Nein | None | 1 |
name
- Variablenname eines Objektes das verglichen werden soll.
locale
- Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
isNull
- Die Bedingung ist erfüllt, wenn die Variable in
name
leer oder nicht vorhanden ist undisNull
den Werttrue
hat. WennisNull
den Wertfalse
hat, ist die Bedingungen erfüllt, wenn die Variable inname
nicht leer ist.
ic
- Die Auswertung soll "ignore case" durchgeführt werden. Bezieht sich auf
eq
,neq
,gt
,gte
,lt
,lte
, undcontains
.
contains
- Zeichenkette, die in der Variablen enthalten sein soll.
match
- Regulärer Ausdruck, der in der Variablen enthalten sein soll.
eq
- Die Bedingung ist erfüllt, wenn die Variable in
name
gleich der Variable ineq
ist.
neq
- Die Bedingung ist erfüllt, wenn die Variable in
name
ungleich der Variable inneq
ist.
gt
- Die Bedingung ist erfüllt, wenn die Variable in
name
grösser als der Variable ingt
ist.
gte
- Die Bedingung ist erfüllt, wenn die Variable in
name
grösser oder gleich der Variable ingte
ist.
lt
- Die Bedingung ist erfüllt, wenn die Variable in
name
kleiner als in der Variable inlte
ist.
lte
- Die Bedingung ist erfüllt, wenn die Variable in
name
kleiner oder gleich der Variable inlte
ist.
condition
- Es wird eine Condition erwartet, die den Wert
true
oderfalse
zurückliefert.
Beispiele
isNull Prüfung
Template Quelltext
<sp:set name="foo" value="bar"/>
<sp:if name="foo"> foo ist definiert!
</sp:if>
<%-- kein Inhalt ist gleichbedeutend mit 'nicht definiert' --%>
<sp:set name="foo" value=""/>
<sp:if name="foo" isNull="true">
foo ist nicht definiert!
</sp:if>
Ausgabe
foo ist definiert!
foo ist nicht definiert!
Einfache if Bedingung
Template Quelltext
<sp:set name="foo" value="bar"/>
<sp:if name="foo" eq="bar">
foo hat den Wert <sp:print name="foo"/>
</sp:if>
Ausgabe
foo hat den Wert bar
Einfache if-elseif-else Bedingung
Template Quelltext
<%--
Bei der Verwendung von if-elseif-else Konstrukten müssen die
einzelnen Tags in einem <sp:condition> zusammengefasst werden.
--%>
<sp:condition>
<sp:if name="foo" eq="foo">
Ich bin im if-Zweig
</sp:if>
<sp:elseif name="foo" eq="barx">
Ich bin im ersten ifelse-Zweig
</sp:elseif>
<sp:elseif name="foo" eq="bar">
Ich bin im zweiten elseif-Zweig
</sp:elseif>
<sp:elseif condition="!isNull(${foo})">
Ich bin im dritten elseif-Zweig
</sp:elseif>
<sp:else>
Ich bin im else-Zweig
</sp:else>
</sp:condition>
Ausgabe
Ich bin im zweiten elseif-Zweig
Abfrage mit condition
Template Quelltext
<sp:if condition="${foo} == 'bar'">
${foo} == 'bar' liefert true
</sp:if>
<sp:set name="x" value="5"/>
<sp:set name="y" value="10"/>
<sp:if condition="(${x} + ${y}) == 15">
Die Summe von x und y ist 15
</sp:if>
<sp:if condition="${x} > 2 && ${x} < 20">
x ist größer als 2 und kleiner als 20
</sp:if>
Ausgabe
${foo} == 'bar' liefert true
Die Summe von x und y ist 15
x ist größer als 2 und kleiner als 20
Prüfe Boolean
Template Quelltext
<sp:set name="boolean" value="true"/>
<sp:if condition="${boolean} == true">
1: boolean ist wahr.
</sp:if>
<sp:if condition="${boolean} == 'true'">
2: boolean ist wahr.
</sp:if>
<sp:if condition="${boolean} == 1">
3: boolean ist wahr.
</sp:if>
Ausgabe
2: boolean ist wahr.