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, é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 property-je, 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:

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>

További információk szerkesztés