<% request.setAttribute("x", 5); request.setAttribute("y", 10); %> ${x*y}Voici le code Java généré par le container de servlets :
public void _jspService( final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { // ... request.setAttribute("x", 5); request.setAttribute("y", 10); out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${x*y}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null, false)); // ... }La valeur de l'expression
${x*y}
est passée en paramètre à la méthode proprietaryEvaluate
.${EL_Expression}
+-----------------------+---------------------------+-------------------------------------------------------------------------------+ | littéral | Exemple | Commentaire | +-----------------------+---------------------------+-------------------------------------------------------------------------------+ | true|false | ${true == (4 == 4)} | Équivalents aux littéraux Java "true" et "false". | | | | Comme pour Java, il faut respecter la casse. | +-----------------------+---------------------------+-------------------------------------------------------------------------------+ | Nombres | ${10000 + 25.87} | Nombres entiers et réels. | +-----------------------+---------------------------+-------------------------------------------------------------------------------+ | Chaînes de caractères | ${"chaîne de caractères"} | Les caractères sont placés entre deux guillemets (") ou deux apostrophes ('). | +-----------------------+---------------------------+-------------------------------------------------------------------------------+ | null | ${null} | Équivalent au littéral Java "null". | | | | Comme pour Java, il faut respecter la casse. | | | | Génère une chaine vide sur la sortie. | +-----------------------+---------------------------+-------------------------------------------------------------------------------+Notes :
${"abc" + "12"}
génère une exception java.lang.NumberFormatException
: java.lang.NumberFormatException: For input string: "abc"
.${"5" - "4"}
donne le résultat "1".null
qui est considéré comme "0" lorsqu'il est utilisé comme opérande de ces opérateurs.${null + "4"}
donne le résultat "4".${"5" / "0"}
est la valeur "Infinity" (comme c'est le cas pour Java lorsque la division est réelle).${"5" % 2}
donne le résultat "1".${"5" % "2.0"}
donne le résultat "1.0".${- (4)}
donne le résultat "-4".${- (-5)}
donne le résultat "5".Nom de l'opérateur | EL | EL (syntaxe java) |
---|---|---|
égale à |
eq (exemple : ${5 eq 2})
|
== (exemple : ${5 == 2})
|
différent de |
ne (exemple : ${5 ne 2})
|
!= (exemple : ${5 != 2})
|
plus grand que |
gt (exemple : ${5 gt 2})
|
> (exemple : ${5 > 2})
|
plus grand ou égale à |
ge (exemple : ${5 ge 2})
|
>= (exemple : ${5 >= 2})
|
plus petit que |
lt (exemple : ${5 lt 2})
|
< (exemple : ${5 < 2})
|
plus petit ou égale à |
le (exemple : ${5 le 2})
|
<= (exemple : ${5 <= 2})
|
le
22}.le
"22"}.le
"22"}.le
"xyz"}.javax.el.ELException
.le
"abc"}.javax.el.ELException: Cannot convert abc of type class java.lang.String to class java.lang.Long
.
Nom de l'opérateur |
EL |
Évaluation de la condition |
---|---|---|
négation NOT |
not |
Exemple (1) : ${not x}Exemple (2) : ${ ! x}la condition est vraie si x est false la condition est fausse si x est true |
! |
||
opérateur AND |
and |
Exemple (1) : ${x and y}Exemple (2) : ${x && y}la condition est vraie si x et y sont true la condition est fausse si x ou/et y sont false |
&& |
||
opérateur OR |
or |
Exemple (1) : ${x or y}Exemple (2) : ${x || y}la condition est vraie si x ou/et y sont true la condition est fausse si x et y sont false |
|| |
null
.<% request.setAttribute("x1", "true"); request.setAttribute("x2", "aaa"); request.setAttribute("x3", "1"); request.setAttribute("x4", "0"); %> ${not x1} ${not x2} ${not x3} ${not x4} ${not x5} ${not null}
true
ou false
, pour déterminer l'expression à exécuter.if(COND) STMT1; else STMT2;
<% request.setAttribute("attr0", 4); %> ${( attr0 mod 2 eq 0) ? "EVEN NUMBER" : "ODD NUMBER"}
empty
est évaluée à vraie si l'opérande est null
, l'opérande est une chaîne de caractères vide, l'opérande est une variable non définie, ou l'opérande est une variable dont la valeur est null
.<% request.setAttribute("y1", ""); request.setAttribute("y2", null); request.setAttribute("y3", new int[0]); request.setAttribute("y4", new Integer[0]); request.setAttribute("y5", new ArrayList()); %> ${empty y1} ${empty y2} ${empty y3} ${empty y4} ${empty y5} ${empty y6} ${empty null}
${REFERENCE_NAME.PROPERTY_NAME}
.${REFERENCE_NAME["PROPERTY_NAME"]}
ou deux quottes simples ${REFERENCE_NAME["PROPERTY_NAME"]}
.<%! public class MyClass { public Integer getProp1() { return 50; } public MyClass getInstance() { return new MyClass(); } } %> <% MyClass myClass = new MyClass(); request.setAttribute("attr0", myClass); %> ${attr0.prop1} ${attr0["prop1"]}Si la valeur d'une propriété est un objet bean, alors il est possible d'utiliser ces opérateurs pour accéder aux propriétés du bean référencé :
${REFERENCE_NAME.PROPERTY_NAME1.PROPERTY_NAME2}
${REFERENCE_NAME["PROPERTY_NAME1"]["PROPERTY_NAME2"]}
.${attr0.instance.prop1} ${attr0["instance"]["prop1"]}Dans certains cas le nom de la propriété peut provenir d'une variable ; par exemple le nom d'un paramètre ou attribut du scope REQUEST. Dans ce cas il est possible d'utiliser l'opérateur "[]" pour accéder à la propriété :
<% request.setAttribute("v0", "prop1"); %> ${attr0[v0]}
<% String[] strArray = {"ABC", "DEF", "GHI"}; %>Accéder aux éléments du tableau :
<% request.setAttribute("attr1", strArray); %> ${attr1[0]} ${attr1["1"]}Accéder aux éléments du tableau en utilisant un indice variable :
<% request.setAttribute("v1", 2); %> ${attr1[v1]}
<% List strLIst = new ArrayList(3); strLIst.add("ABC"); strLIst.add("DEF"); strLIst.add("GHI"); %>Accéder aux éléments de la liste :
<% request.setAttribute("attr2", strLIst); %> ${attr2[0]} ${attr2["1"]}Accéder aux éléments de la liste en utilisant un indice variable :
<% request.setAttribute("v2", 2); %> ${attr2[v2]}
<% Map strMap = new HashMap(); strMap.put("A", "ABC"); strMap.put("D", "DEF"); strMap.put("G", "GHI"); %>Accéder aux éléments de la Map :
<% request.setAttribute("attr3", strMap); %> ${attr3["A"]} ${attr3.D}Accéder aux éléments de la Map en utilisant un indice variable :
<% request.setAttribute("v3", "G"); %> ${attr3[v3]}
+------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | Objet | Description | Équivalent en JSP | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | pageContext | Instance de PageContext de la page JSP | objet implicite pageContext | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | pageScope | Un objet Map des attributs du scope PAGE | pageContext.getAttribute(PAGE_SCOPE) | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | requestScope | Un objet Map des attributs du scope REQUEST | request.getAttribute() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | sessionScope | Un objet Map des attributs du scope SESSION | session.getAttribute() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | applicationScope | Un objet Map des attributs du scope APPLICATION | application.getAttribute() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | param | Un objet Map des paramètres de la requête http (première valeur de chaque paramètre) | request.getParameter() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | paramValues | Un objet Map des paramètres de la requête http (toutes les valeurs des paramètres) | request.getParameterValues() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | initParam | Un objet Map des paramètresd'initialisation de l'application (ServletContext) | config.getServletContext().getInitParameter() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | header | Un objet Map des paramètres de la requête http (première valeur de chaque entête) | request.getHeader() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | headerValues | Un objet Map des paramètres de la requête http (toutes les valeurs des entêtes) | request.getHeaders() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+ | cookie | Un objet Map des cookies de la requête http | request.getCookies() | +------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------+
PageContext
de la page JSP.PageContext
déclare la méthode getRequest()
qui retourne un objet de type ServletRequest
qui lui-même déclare la méthode getServerName()
.pageContext.getRequest().getServerName(): ${pageContext.request.serverName}
${requestScope.attr0}Notes : Comme ces objets sont de type Map, donc les même règles, vues pour les operateurs "." et "[]" pour accéder aux éléments d'une Map, s'appliquent aussi pour ces variables.
${sessionScope["attr0"]["attr1"]}Notes : Il est possible d'accéder aux attributs de ces 4 scopes sans expliciter le scope, par exemple
${attr0}
,
dans ce cas la recherche est faite en utilisant la fonction "findAttribute" de la classe "PageContext" ${PageContext.findAttribute("attr0")
qui va chercher l'attribut dans ces 4 scopes.
${param.myparam1} ${paramValues.myparam2[1]} ${paramValues.myparam2[2]}Notes : Comme ces objets sont de type Map, donc les même règles, vues pour les operateurs "." et "[]" pour accéder aux éléments d'une Map, s'appliquent aussi pour ces variables.
${initParam.myinitparam1}Notes : Comme cet objet est de type Map, donc les même règles, vues pour les operateurs "." et "[]" pour accéder aux éléments d'une Map, s'appliquent aussi pour cette variable.
${header.myheader1} ${headerValues.myheader2[1]}Notes : Comme ces objets sont de type Map, donc les même règles, vues pour les operateurs "." et "[]" pour accéder aux éléments d'une Map, s'appliquent aussi pour ces variables.
${cookie.mycookieparam1}Notes : Comme cet objet est de type Map, donc les même règles, vues pour les operateurs "." et "[]" pour accéder aux éléments d'une Map, s'appliquent aussi pour cette variable.