Filter (SP-Tag)
Zur Navigation springen
Zur Suche springen
Name
<sp:filter> - Filtert Elemente aus einer Liste.
Syntax
<sp:filter name="filteredList" collection="listToFilter" attribute="name" filter="*Example*" ic="true"/>
Beschreibung
Mit diesem Tag können Listen gefiltert werden um beispielsweise Listen-Elemente nach bestimmten Kriterien aus der Liste zu entfernen. Es gibt drei Arten von Filtern: Einen einfachen Wildcard-Filter, der * und ? unterstützt, einen Filter aus regulären Ausdrücken für komplexe Anforderungen sowie einen Bereichsfilter.
Attribute
Name | Type | Required | Default | ab IES Version |
---|---|---|---|---|
name
|
Variable | Ja | None | 1 |
collection
|
Collection | Ja | None | 1 |
attribute
|
Text | Nein | das Element selbst | 1 |
filter
|
Text / Regular-Expression | Nein | None | 1 |
ic
|
Condition | Nein | false
|
1 |
invert
|
Condition | Nein | false
|
1 |
mode
|
Text | Nein | simple
|
1 |
locale
|
Locale | Nein | None | 1 |
from
|
Text | Nein | None | 1 |
to
|
Text | Nein | None | 1 |
type
|
Text | Nein | None | 1 |
format
|
Text | Nein | None | 1 |
scope
|
Text | Nein | None => RequestScope | 2.13 |
name
- Name der gefilterten Liste.
collection
- Name der zu filternden Liste.
attribute
- Attribut, auf das der Filter angewendet werden soll.
filter
- Die Filterdefinition für die Filtertypen Wildcard und regulärer Ausdruck. Der mit dem Attribut
mode
angegebene Modus wird verwendet. Ohne Angabe eines Modus wirdsimple
verwendet.
ic
- Ist Ignore-Case auf
true
gesetzt, wird eine Groß- und Kleinschreibung nicht berücksichtigt. Dieses Attribut gilt nur für die Filtertypen Wildcard und regulärer Ausdruck.
invert
- Invertiert die Logik des Filters. Alle Elemente die normalerweise herausgefiltert würden, bilden die Filterergebnisse.
mode
- Auswahl des Filter-Mechanismus.
- simple (Wildcard-Filter)
- Der Filter kann die Wildcards * für beliebige Zeichen und ? für ein beliebiges Zeichen enthalten. So würde eine wie folgt gefilterte Liste nur Elemente enthalten, die mit a beginnen.
a*
- regex (Reguläre Ausdrücke)
- Für komplexe Filter stehen Reguläre Ausdrücke (POSIX) zur Verfügung. So würde im regex-Filtermode eine mit
[a-dA-D].*
gefilterte Liste nur Elemente enthalten, die mit dem Buchstaben A, a, B, b, C, c, d oder D beginnen.
locale
- Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
from
- Der Wert für den Beginn eines Bereiches, z.B. "Aa" oder "100". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut type angegeben werden.
to
- Der Wert für das Ende eines Bereiches, z.B. "Zz" oder "999". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut
type
angegeben werden.
type
- Der Typ für die
from
undto
Attribute:number
,text
,date
.- number
- Das Element oder Attribut wird als Zahl interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Zahlenbereiches liegt, der mit
from
undto
definiert wurde. - text
- Das Element oder Attribut wird als Text interpretiert. Es wird nicht herausgefiltert wenn der Text mit den Zeichen beginnt, die in dem mit
from
undto
definierten Bereich liegen. - date
- Das Element oder Attribut wird als Datum interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Datumbereiches liegt, der mit
from
undto
definiert wurde.
format
- Das Format des Datums, wenn die
from
undto
Werte als Datum interpretiert werden sollen. scope
- Gültigkeitsbereich, in dem die Variable definiert ist. Möglich sind:
page|request|session
.
Beispiele
Filtern einer Liste
Template Quelltext
<%-- zu filternde Liste erzeugen --%>
<sp:collection name="names" action="add" value="Christian"/>
<sp:collection name="names" action="add" value="Karsten"/>
<sp:collection name="names" action="add" value="Gaby"/>
<sp:collection name="names" action="add" value="Markus"/>
<sp:collection name="names" action="add" value="Tina"/>
<sp:collection name="names" action="add" value="Marion"/>
<sp:collection name="names" action="add" value="Jörg"/>
<%-- Einfacher Filter --%>
Liste filtern (Filter ?ar* - simple-mode):<br>
<sp:filter name="filteredList" collection="names" filter="?ar*" mode="simple"/>
<sp:loop collection="filteredList" item="it">
<sp:print name="it"/><br>
</sp:loop>
<br>
<%-- Filter mit regulärem Ausdruck --%>
Liste filtern (Filter [a-lA-L].* - regex-mode):<br>
<sp:filter name="filteredList" collection="names" filter="[a-lA-L].*" mode="regex"/>
<sp:loop collection="filteredList" item="it">
<sp:print name="it"/><br>
</sp:loop>
Ausgabe
Liste filtern (Filter ?ar* - simple-mode):
Karsten
Markus
Marion
Liste filtern (Filter [a-lA-L].* - regex-mode):
Christian
Karsten
Gaby
Jörg