• Aucun résultat trouvé

La réalisation de tests

Dans le document Cours J2EE Approfondi (Page 82-84)

La première chose que vous devez savoir, c'est qu'à l'intérieur d'une expression, vous pouvez effectuer diverses sortes de tests. Pour réaliser ces tests, il vous est possible d'inclure tout une série d'opérateurs. Parmi ceux-ci, on retrouve les traditionnels :

opérateurs arithmétiques, applicables à des nombres : +, -, *, /, % ; opérateurs logiques, applicables à des booléens : &&, ||, ! ;

opérateurs relationnels, basés sur l'utilisation des méthodes equals() et compareTo() des objets comparés : == ou

eq, != ou ne, < ou lt, > ou gt, <= ou le, >= ou ge.

Voyons concrètement ce que tout cela donne à travers quelques exemples. Créez pour l'occasion une page nommée test_el.jsp à la racine de votre application, et placez-y ces quelques lignes :

Code : JSP - /test_el.jsp <!DOCTYPE html> <html>

<head>

<meta charset="utf-8" />

<title>Test des expressions EL</title>

<body>

<p>

<!-- Logiques sur des booléens -->

${ true && true } <br /> <!-- Affiche true -->

${ true && false } <br /> <!-- Affiche false -->

${ !true || false } <br /> <!-- Affiche false -->

<!-- Calculs arithmétiques -->

${ 10 / 4 } <br /> <!-- Affiche 2.5 -->

${ 10 mod 4 } <br /> <!-- Affiche le reste de la division entière, soit 2 -->

${ 10 % 4 } <br /> <!-- Affiche le reste de la division entière, soit 2 --> ${ 6 * 7 } <br /> <!-- Affiche 42 --> ${ 63 - 8 } <br /> <!-- Affiche 55 --> ${ 12 / -8 } <br /> <!-- Affiche -1.5 --> ${ 7 / 0 } <br /> <!-- Affiche Infinity -->

<!-- Compare les caractères 'a' et 'b'. Le caractère 'a' étant bien situé avant le caractère 'b' dans l'alphabet ASCII, cette EL affiche true. -->

${ 'a' < 'b' } <br />

<!-- Compare les chaînes 'hip' et 'hit'. Puisque 'p' < 't', cette EL affiche false. -->

${ 'hip' gt 'hit' } <br />

<!-- Compare les caractères 'a' et 'b', puis les chaînes 'hip' et 'hit'. Puisque le premier test renvoie true et le second false, le résultat est false. -->

${ 'a' < 'b' && 'hip' gt 'hit' } <br />

<!-- Compare le résultat d'un calcul à une valeur fixe. Ici, 6 x 7 vaut 42 et non pas 48, le résultat est false. -->

${ 6 * 7 == 48 } <br />

</p>

</body> </html>

Rendez-vous alors sur http://localhost:8080/test/test_el.jsp, et vérifiez que les résultats obtenus correspondent bien aux commentaires que j'ai placés sur chaque ligne.

Remarquez la subtilité dévoilée ici dans l'exemple de la ligne 27, au niveau des chaînes de caractères : contrairement à du code Java, dans lequel vous ne pouvez déclarer une String qu'en utilisant des double quotes (guillemets), vous pouvez utiliser également des simple quotes (apostrophes) dans une expression EL. Pour information, ceci a été rendu possible afin de simplifier l'intégration des expressions EL dans les balises JSP : celles-ci contenant déjà bien souvent leurs propres guillemets, cela évite au développeur de s'emmêler les crayons ! Pas de panique, vous comprendrez où je veux en venir dans la partie suivante, lorsque nous pratiquerons la JSTL !

Attention ici aux opérateurs relationnels :

si vous souhaitez vérifier l'égalité d'objets de type non standard via une EL, il vous faudra probablement réimplémenter les méthodes citées dans le troisième point de la liste précédente ;

si vous souhaitez effectuer une comparaison, il vous faudra vérifier que votre objet implémente bien l'interface Comparable.

Autrement dit, pas besoin de vous casser la tête pour un objet de type String ou Integer, pour lesquels tout est déjà prêt nativement, mais pour des objets de votre propre création et/ou de types personnalisés, pensez-y !

Les opérateurs suivent comme toujours un ordre de priorité : comme on a dû vous l'apprendre en cours élémentaire, la multiplication est prioritaire sur l'addition, etc. J'omets ici volontairement certaines informations, notamment certains opérateurs que je ne juge pas utile de vous présenter ; je vous renvoie vers la documentation officielle pour plus d'informations. Les applications que nous verrons dans ce cours ne mettront pas en jeu d'expressions EL très complexes, et vous serez par la suite assez à l'aise avec le concept pour comprendre par vous-même les subtilités de leur utilisation dans des cas plus élaborés.

En outre, deux autres types de test sont fréquemment utilisés au sein des expressions EL : les conditions ternaires, de la forme : test ? si oui : sinon ;

les vérifications si vide ou null, grâce à l'opérateur empty. Très pratiques, ils se présentent sous cette forme :

Code : JSP

<!-- Vérifications si vide ou null -->

${ empty 'test' } <!-- La chaîne testée n'est pas vide, le résultat est false -->

${ empty '' } <!-- La chaîne testée est vide, le résultat est true -->

${ !empty '' } <!-- La chaîne testée est vide, le résultat est false -->

<!-- Conditions ternaires -->

${ true ? 'vrai' : 'faux' } <!-- Le booléen testé vaut true, vrai est affiché -->

${ 'a' > 'b' ? 'oui' : 'non' } <!-- Le résultat de la comparaison vaut false, non est affiché -->

${ empty 'test' ? 'vide' : 'non vide' } <!-- La chaîne testée n'est pas vide, non vide est affiché -->

Pour terminer, sachez enfin que la valeur retournée par une expression EL positionnée dans un texte ou un contenu statique sera insérée à l'endroit même où est située l'expression :

Code : JSP

<!-- La ligne suivante : -->

<p>12 est inférieur à 8 : ${ 12 lt 8 }.</p>

<!-- Sera rendue ainsi après interprétation de l'expression, 12 n'étant pas inférieur à 8 : -->

<p>12 est inférieur à 8 : false.</p>

Dans le document Cours J2EE Approfondi (Page 82-84)