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
|
Variable | Nein | None | 1 |
neq
|
Variable | Nein | None | 1 |
gt
|
Variable | Nein | None | 1 |
gte
|
Variable | Nein | None | 1 |
lt
|
Variable | 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
name
leer oder nicht vorhanden ist undisNull
den Werttrue
hat. WennisNull
den Wertfalse
hat, ist die Bedingungen erfüllt, wenn die 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 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.