Condition (SP-Tag)
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 dem <sp:if> erstellt werden.
Es bestehen zwei Möglichkeiten der if-Abfrage. Zum einen kann mit dem name-Attribute die zu prüfende Variable und mit gt, gte, lt, usw. die zu prüfende Bedingung angegeben werden. Für komplexe Abfragen ist diese Möglichkeit nicht ausreichend, da verschachtelte UND- und ODER-Verknüpfungen so sehr Aufwendig werden können. Das condition-Attribute bietet eine weitere Möglichkeit Bedingungen zu formulieren. Innerhalb dieses Attributes können Ausdrücke wie folgt angegeben werden.
<sp:if condition="(${a} > ${b}) && ((${a} + 3) / 10 < ${b})}">
..
</sp:if>
Sollte der Vergleich positiv sein, wird der Tagbody des if-Tags weiter behandelt. Andernfalls wird der Taginhalt übersprungen. Bei aufwendigeren Abfragen, die zum Beispiel einen else Tag oder mehrere elseif Bereiche besitzen können, wird das Tag <sp:condition> benötigt, dass die Abfrage umschliesst. Das condition-Tag ermöglicht die Implementation von diversen <sp:if>-<sp:elseif>-<sp:else> Konstrukten. Zu beachten ist, 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>.
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- Name der Variable, bzw des Objektes das verglichen werden soll.
locale- Dieses Attribut dient zur Auswahl der zu verwendende Sprache bei mehrsprachiger Variablen.
isNull- Die Bedingung ist erfüllt, wenn die Variable in
nameleer oder nicht vorhanden ist undisNullden Werttruehat. WennisNullden Wertfalsehat, ist die Bedingungen erfüllt, wenn die die Variable innamenicht 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 in eq ist.
neq
- Die Bedingung ist erfüllt, wenn die Variable in
name ungleich der Variable in neq ist.
gt
- Die Bedingung ist erfüllt, wenn die Variable in
name grösser als der Variable in gt ist.
gte
- Die Bedingung ist erfüllt, wenn die Variable in
name grösser oder gleich der Variable in gte ist.
lt
- Die Bedingung ist erfüllt, wenn die Variable in
name kleiner als in der Variable in lte ist.
lte
- Die Bedingung ist erfüllt, wenn die Variable in
name kleiner oder gleich der Variable in lte ist.
condition
- Es wird eine Condition erwartet, die den Wert
true oder false 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.