Filter (SP-Tag)
(Weitergeleitet von Sp:filter)
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
modeangegebene Modus wird verwendet. Ohne Angabe eines Modus wirdsimpleverwendet.
ic- Ist Ignore-Case auf
truegesetzt, 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
typeangegeben werden.
type- Der Typ für die
fromundtoAttribute:number,text,date.- number
- Das Element oder Attribut wird als Zahl interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Zahlenbereiches liegt, der mit
fromundtodefiniert 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
fromundtodefinierten Bereich liegen. - date
- Das Element oder Attribut wird als Datum interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Datumbereiches liegt, der mit
fromundtodefiniert wurde.
format- Das Format des Datums, wenn die
fromundtoWerte 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