- fn:length(input)
- fn:contains(string, substring)
- fn:containsIgnoreCase(string, substring)
- fn:endsWith(string, suffix)
- fn:escapeXml(string)
- fn:indexOf(string, substring)
- fn:join(array, separator)
- fn:split(string, delimiters)
- fn:replace(inputString, beforeSubstring, afterSubstring)
- fn:startsWith(string, prefix)
- fn:substring(string, beginIndex, endIndex)
- fn:substringAfter(string, substring)
- fn:substringBefore(string, substring)
- fn:toLowerCase(string)
- fn:toUpperCase(string)
- fn:trim(string)
Die functions-Bibliothek unterscheidet sich von den anderen Bibliotheken schon in ihrer Syntax. Sie wird zwar wie eine normale Tag-Bibliothek definiert, allerdings dient die functions-Bibliothek ausschließlich zur Bildung von Expression Language-Ausdrücken und nicht zur Verwendung in eigenen Tags.
Bspw. kann man die Funktion fn:toLowerCase(string) wie folgt nutzen:
Es ist allerdings nicht möglich, diese Funktion als Tag zu nutzen:
Mit einer Ausnahme sind alle Funktionen ausschließlich auf Strings oder auf zu Strings konvertierbare Werte anwendbar und ähneln daher zumeist Methoden, die in der Klasse
java.lang.String zu finden sind. Die Funktionen dieser Bibliothek sind gegenüber möglichen Fehlern weitgehend geschützt. Es wird nie null zurück gegeben, sondern ggf. stattdessen ein Leerstring. Und auch übergebene Null-Strings werden wie Leerstrings behandelt und führen zu keinem Fehler. Zunächst wieder eine Übersicht aller Funktionen:
| Funktion | Signatur | Bedeutung |
| fn:contains | boolean contains(java.lang.String, java.lang.String) | Prüft, ob ein Eingabestring einen anderen String enthält |
| fn:containsIgnoreCase | boolean containsIgnoreCase(java.lang.String, java.lang.String) | Prüft, ob ein Eingabestring einen anderen String unabhängig von der Groß-/Kleinschreibung enthält |
| fn:endsWith | boolean endsWith(java.lang.String, java.lang.String) | Prüft, ob eine String mit dem angegebenen Suffix endet |
| fn:escapeXml | java.lang.String escapeXml(java.lang.String) | Ersetzt XML-Markup-Zeichen durch geeignete Escape-Zeichen |
| fn:indexOf | int indexOf(java.lang.String, java.lang.String) | Gibt den Index zurück, an dem ein Teilstring im Eingabestring zu finden ist |
| fn:join | java.lang.String join(java.lang.String[], java.lang.String) | Verbindet alle Elemente eines Arrays zu einem String |
| fn:length | int length(java.lang.Object) | Gibt die Länge des Strings oder die Anzahl der Elemente einer Collection zurück |
| fn:replace | java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) | Ersetzt in einem String jedes Vorkommen eines Teilstrings durch einen neuen Teilstring |
| fn:split | java.lang.String[] split(java.lang.String, java.lang.String) | Zerteilt einen String in ein Array von Teilstrings |
| fn:startsWith | boolean startsWith(java.lang.String, java.lang.String) | Prüft, ob ein String mit dem angegebenen Präfix beginnt |
| fn:substring | java.lang.String substring(java.lang.String, int, int) | Gibt einen Teilstring des Eingabestrings zurück |
| fn:substringAfter | java.lang.String substringAfter(java.lang.String, java.lang.String) | Gibt den Teilstring des Eingabestrings zurück, der hinter einem weiteren Teilstring gefunden wurde |
| fn:substringBefore | java.lang.String substringBefore(java.lang.String, java.lang.String) | Gibt den Teilstring des Eingabestrings zurück, der vor einem weiteren Teilstring gefunden wurde |
| fn:toLowerCase | java.lang.String toLowerCase(java.lang.String) | Wandelt alle Buchstaben des Eingabestrings in Kleinbuchstaben um |
| fn:toUpperCase | java.lang.String toUpperCase(java.lang.String) | Wandelt alle Buchstaben des Eingabestrings in Großbuchstaben um |
| fn:trim | java.lang.String trim(java.lang.String) | Entfernt alle Whitespace-Zeichen vom Anfang und Ende des Strings |
Aufgrund des anderen Aufbaus der Bibliothek und der Tatsache, dass die Attribute aufgrund ihrer Ähnlichkeit zu Methoden der java.lang.String-Klasse selbsterklärend sind, nutzen wir für die functions-Bibliothek eine andere Darstellungsweise. Bei dieser Bibliothek sind übrigens alle Attribute stets Pflichtattribute.
fn:length(input)
Die einzige Funktion, die nicht unbedingt einen String voraussetzt. Sie gibt die Größe von Arrays oder Listen bzw. die Länge von Strings zurück.
fn:contains(string, substring)
Diese Funktion nimmt zwei Strings als Parameter entgegen und prüft, ob der zweite String in dem ersten enthalten ist. Gibt einen boolschen Wert zurück und wird daher hauptsächlich in <c:if> oder <c:when>-Tags verwendet.
fn:containsIgnoreCase(string, substring)
Entspricht der vorhergehenden Funktion, nur dass bei dem Vergleich in dieser Funktion die Groß-/Kleinschreibung nicht berücksichtigt wird.
fn:endsWith(string, suffix)
Auch diese Funktion nimmt zwei Strings als Parameter entgegen und prüft, ob das Ende des ersten Strings dem zweiten String entspricht. Es gibt für diese Funktion keinen Gegenpart, der die Groß-/Kleinschreibung ignoriert. Man kann allerdings Funktionen schachteln und könnte sich daher wie in dem folgenden Beispiel behelfen. Hier wird geprüft, ob ein Dateiname, der im Request-Attribut "fileName" abgelegt ist, die Dateiendung ".xml" hat:
fn:escapeXml(string)
Diese Funktion wandelt Zeichen des übergebenen Strings, die in XML eine besondere Bedeutung haben (doppelte und einfache Anführungsstriche, "&", "<", ">"), in ihre XML-Entitäten um (bspw. "&" für "&").
fn:indexOf(string, substring)
Gibt den Index an, ab dem der Text des zweiten Parameters im ersten Parameter enthalten ist. Wie in der entsprechenden Methode der Klasse java.lang.String wird "-1" zurückgegeben, wenn der zweite String nicht im ersten enthalten ist.
fn:join(array, separator)
Mit dieser Funktion kann man mehrere Elemente eines Arrays zu einem String zusammen fügen (das Gegenstück zur Funktion "fn:split()"). Dabei nimmt die Funktion als ersten Parameter das Array entgegen und als zweiten einen String, der zwischen die einzelnen Elemente des Arrays eingefügt wird. Ist der zweite Parameter vom Wert null, werden die Elemente direkt aufeinanderfolgend zusammengefügt. Ein Beispiel soll dies kurz verdeutlichen:
Wenn das Request-Attribut "answers" nun "felsig" und "steinig" enthält, würde durch die Funktion der String "felsig, steinig" zurückgegeben.
fn:split(string, delimiters)
Fügt "fn:join()" ein Array zusammen, so trennt "fn:split" einen String auf. Allerdings ist die Bedeutung des zweiten Parameters anders. In dieser Funktion wird ein String überall dort, wo einer der Delimiter vorkommt, aufgetrennt. Dabei sind alle Zeichen des zweiten übergebenen Strings ein Delimiter. Die Delimiter werden dabei nicht übernommen. Eine Trennung von "felsig, steinig" mit ", " würde somit die beiden Strings "felsig" und "steinig" ergeben. Eine Trennung von "felsig - steinig" mit ", " würde ein Array mit den drei Elementen "felsig", "-" und "steinig" ergeben. Folgen wie im ersten Beispiel direkt zwei oder mehrere Delimiter im aufzutrennenden String direkt hintereinander, so wird kein Leerstring ins Array eingefügt.
fn:replace(inputString, beforeSubstring, afterSubstring)
Ersetzt innerhalb des Strings "inputString" jedes Vorkommen von "beforeSubstring" durch den angegebenen "afterSubstring".
fn:startsWith(string, prefix)
Prüft, ob der übergebene String mit dem angegebenen Präfix anfängt und gibt entsprechend true oder false zurück.
fn:substring(string, beginIndex, endIndex)
Liefert einen Teil des gesamten Strings, der als erster Parameter übergeben wird. Es müssen sowohl Anfangs- als auch Endindex angegeben werden. Diese Funktion ist weitestgehend fehlertolerant. Sowohl falsche Grenzen als auch Null-Werte werden entsprechend vernünftiger Angaben angepasst. Eine Fehlersituation kann praktisch nicht vorkommen. Bspw. wird ein Endindex, der grösser ist als die Länge des Strings, auf die Länge des Ausgangsstrings abgeändert.
Eine Funktion, die einem Aufruf von someString.substring(beginIndex) entspricht. gibt es in der JSTL nicht. Allerdings existieren die beiden folgenden Funktionen, die es in der Klasse java.lang.String nicht gibt.
fn:substringAfter(string, substring)
Diese Funktion liefert den String innerhalb des ersten übergebenen Parameters, der hinter dem Substring beginnt, der als zweiter Parameter übergeben wurde.
fn:substringBefore(string, substring)
Analog zur vorhergehenden Funktion liefert diese den String zurück, der vor dem ersten Auftreten des übergebenen Parameters "substring" vorkommt.
fn:toLowerCase(string)
Wandelt einen String in einen String um, bei dem alle Großbuchstaben des übergebenen Strings durch Kleinbuchstaben ersetzt werden.
fn:toUpperCase(string)
Analog zur vorhergehenden Funktion wandelt diese Funktion einen String in einen String um, bei dem alle Kleinbuchstaben des übergebenen Strings durch Großbuchstaben ersetzt werden.
fn:trim(string)
Mit der Funktion fn:trim(string) werden sämtliche führende und abschließende Whitespace-Zeichen (Leerzeichen, Tabulatoren etc.) abgeschnitten.

