Filter (SP-Tag)

Aus SiteparkWiki
(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 mode angegebene Modus wird verwendet. Ohne Angabe eines Modus wird simple 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 und to 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 und to 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 und to 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 und to definiert wurde.
format
Das Format des Datums, wenn die from und to 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