Expression Language
Az Expression Language (EL- magyarul kifejezés nyelv) egy script nyelv, amelyet a JavaBean-ek elérését teszi lehetővé JSP-n keresztül. A JSP 2.0 óta JSP tag-eken belül használható, ezzel különválasztva a Java kódot a JSP-től.
Az EL-t olyan céllal fejlesztették, hogy könnyebbé tegyék a script írást, olyan webprogramozók számára, akik kevés vagy semennyi tapasztalattal sem rendelkeznek a Java nyelvből.
Az EL használata
[szerkesztés]A kifejezések statikus szövegben, és tag-eken belül is használhatjuk a következőképpen: <some:tag value="${expr}"/>
Ha egy kifejezés nem #{
-vel kezdődik, akkor az literálnak minősül. A #{
karaktereket a '#{' módon lehet megjeleníteni. Ha több kifejezés is szerepel, akkor azok balról jobbra értékelődnek ki.
Változók:
Ha az kifejezésben egy változó szerepel, akkor a konténer a page, request, session és application scope-okban keresi a változó értékét. Ha nem találja, akkor null
-t ad vissza. Ha pedig változó is implicit object
is szerepel ugyanazon a néven akkor az implicit objectet adja vissza, ilyenek például a pageContext, paramValues, cookie, requestScope, stb. A .
és []
operátor egyenértékű.
Egy összetett expression (expr-a.expr.b) a következőképp végzi:
- Ha value-a egy Map, akkor value-a.get(value-b)-t ad vissza, ha nem találja, akkor
null
-t. - Ha value-a egy lista vagy tömb, akkor b-t egy
int
típusba kényszeríti, ésvalue-a.get(value-b)
-t vagyArray.get(value-a,value-b)
-t ad vissza. Ha aget
hívásIndexOutOfBoundException
nal tér vissza, akkor a kifejezés értékenull
lesz, ha más hibával tér vissza vagy a típuskényszerítés nem sikerül, akkor hibát jelez. - Ha
value-a
egy JavaBean, akkor value-b-tString
-be kényszeríti, és ha ez a String a value-a egy property-je, akkor aget
hívás eredményét adja vissza.
Literálok:
- Boolean: true és false
- Integer, Floating point: ugyanaz, mint Java-ban
- String: ' és " idézőjelet is lehet használni, \ segítségével lehet escape-elni
- Null: null
Operátorok precedencia szerint:
- [], .
- () - a kiértékelés sorrendjét lehet vele megváltoztatni
- - (unary), not, !, empty - meghatározza hogy az utána lévő érték null vagy empty
- *, /, div, %, mod
- +, - (binary)
- < > <= >= lt gt le ge
- == != eq ne
- && and
- || or
- ? :
Függvények:
Ahhoz hogy egy függvényt használhassunk importálni kell az azt tartalmazó tag libraryt, és a megfelelő preface-el ellátni a függvényt.
<%@ taglib prefix="f" uri="/functions"%>
...
<c:when
test="${f:equals(selectedLocaleString,localeString)}" >
Ahhoz hogy saját függvényt használhassunk, public static
módosítószóval kell ellátni, és public
osztályba tenni. Ezután mappelni kell a függvényt olyan néven, ahogy használni szeretnénk az EL expression-ben.
<function>
<name>equals</name>
<function-class>mypkg.MyLocales</function-class>
<function-signature>boolean equals( java.lang.String, java.lang.String )</function-signature>
</function>