Inhalt | Abbildung | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |
Mit der Expression Language hat man Zugriff auf eine Reihe von implizierten Objekten, die in der folgenden Tabelle zusammengefasst sind.
Name | Bedeutung |
pageContext | Die Instanz der PageContext Klasse ,für die aktuelle Seite |
pageScope | Eine Collection (java.util.Map) aller page scope Variablen |
requestScope | Eine Collection (java.util.Map) aller request scope Variablen |
sessionScope | Eine Collection (java.util.Map) aller session scope Variablen |
applicationScope | Eine Collection (java.util.Map) aller application scope Variablen |
param | Eine Collection (java.util.Map) aller Parameterwerte einer Anfrage.${param.name} entspricht aServletRequest.getParameter(name) |
paramValues | Eine Collection (java.util.Map) aller Parameterwerte einer Anfrage als String Array. ${paramValue.name} entspricht aServletRequest.getParameterValues(name) |
header | Eine Collection (java.utilMap) aller Header Werte einer Anfrage. |
headerValues | Eine Collection (java.utilMap) aller Header Werte einer Anfrage als String Array |
cookie | Eine Collection (java.utilMap) von Cookie-Namen zu einzelnen Cookie Werten |
initParam | Eine Collection (java.utilMap) aller Initialisierungsparameter |
Beispiele:
Bei einem Ausdruck ${einString} wird erstmal geschaut ob einString ein implizites Objekt ist. In diesem Falle wird dieses zurückgegeben. Ansonsten wird mit der Funktion PageContext.findAttribute(einString) der Paramter einString in den Scopes gesucht. Es werden nacheinander die Scopes page,request,session und application durchsucht bis das Attribut einString gefunden wird. Es wird der Wert des Attributs einString zurückgegeben, oder falls es diesen nicht gibt, wird der Wert null zurückgegeben. Sollte es ein Attribut innerhalb eines Scopes wie ein implizites Objekt heissen, so wird das implizite Objekt zurückgegeben.
Given a scenario, write EL code that uses the following operators: property access (the '.' operator), collection access (the '[]' operator). |
Mit dem Punkt Operator '.' wird auf die Properties eines Beans zugreifen.
Auch ist es sehr einfach, auf eine Map zuzugreifen:
Ausdrücke mit der Syntax '${identifier[subexpression]}' werden folgendermassen ausgewertet:
Identifier type | Example use | Method invoked |
JavaBean | ${colorBean.red} <br> ${colorBean["red"]} <br> ${colorBean['red']} | colorBean.getRed() |
Array | ${colorArray[2]} <br> ${colorArray["2"]} | Array.get(colorArray, 2) |
List | ${colorList[2]} <br> ${colorList["2"]} | colorList.get(2) |
Map | ${colorMap[red]} | colorMap.get(pageContext.findAttribute("red")) |
${colorMap["red"]} <br> ${colorMap.red} | colorMap.get("red") |
Given a scenario, write EL code that uses the following operators: aritmetic operators, relational operators, and logical operators. |
Es existieren die gewohnten arithmetischen Operatoren: '+', '-', '*', '/', '%'. Für die Division kann man ausser '/' auch div benutzen. Für Modulo kann man ausser '%' auch mod benutzen.
6 + 7 = ${6+7} 8 x 9 = ${8*9} |
Bei einer Division durch 0, wird keine Exception geworfen sondern der String 'Infinity' zurückgegeben.
Die relationalen Operatoren sind in folgender Tabelle zusammengefasst:
Symbol version | Text Version |
== | eq |
!= | ne |
< | lt |
> | gt |
>= | ge |
<= | e |
Hier sind einige Beispiele:
Die logischen Operatoren entsprechen denen von Java. Für jeden operator gibt es auch eine textuelle Variante:
Symbol | version Text Version |
&& | and |
II | or |
! | not |
Da es in EL kein null Wert gibt, wurde der empty Operator eingefügt.
Beispiel
Dieser Operator wird true fall:
Der Operator wird folgendermassen aufgerufen:
empty variableName |
Given a scenario, write EL code that uses a function; write code for an EL function; and configure the EL function in a tag library descriptor. |
Die Expression Language lässt sich um eigene Funktionen erweitern. Eine Funktion besteht aus einem Präfix, dem Funktionsnamen und ggf. einigen Parametern.
Es muss eine taglib Direktive existieren, die dem Prefix (ns) eine TagLibDescripiton Datei zuordnet.
z.B:
In dieser TLD Datei wird die Schnittstelle der Funktionen definiert.
Die Java Klasse muss in der tld-Datei voll qualifiziert angegeben werden. Die eigentliche Funktion ist eine statische Funktion der angegebenen Java Klasse.
Die Bedeutung von function-extension und extension-element ist mir selbst noch unklar, wird aber wahrscheinlich für die Zertifizierung nicht benötigt.
Hier ein Beispiel einer selbstgeschriebenen concat-Funktion
Tritt beim Ausführen der Funktion eine Exception auf, so wird diese Exception in eine ELException gewrapped, und diese ELException wird geworfen.
Inhalt | Abbildung | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |