User:Szpjenci/sandbox

Az Expression Language (EL) egy script nyelv, ami 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.

EL használata: Az expression-öket statikus szövegben és tag-eken belül is használhatjuk a következőképpen:  Ha egy expression nem #{-vel kezdődik akkor az literálnak minősül. A #{ karaktereket a '#{' módon lehet megjeleníteni. Ha több expression is szerepel, akkor azok balról jobbra értékelődnek ki.

Változók: Ha az expression-ben egy változó szerepel, akkor a container a a page, request, session és application scope-okban keresi a váltzó é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, cokkie, 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énszeríti, és value-a.get(value-b)-t vagy Array.get(value-a,value-b)-t ad vissza. Ha a get hívás IndexOutOfBoundExceptionnal tér vissza, akkor a kifejezés értéke null 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-t String-be kényszeríti, és ha ez a String a value-a egy propertyje, akkor a get 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: Ahoz hogy egy függvényt használhassunk importálni kell az azt tartalmazkó tag libraryt, és a megfelelő preface-el ellátni a függvényt. <%@ taglib prefix="f" uri="/functions"%> ...      

Ahoz 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. equals mypkg.MyLocales boolean equals( java.lang.String, java.lang.String ) 