340 votes

Comment utiliser l'option if-else en JSTL ?

Y a-t-il une balise if-else disponible dans JSTL ?

0 votes

Duplicata possible de if...else dans JSP ou JSTL

541voto

skaffman Points 197885

Oui, mais c'est très lourd, par exemple.

<c:choose>
  <c:when test="${condition1}">
    ...
  </c:when>
  <c:when test="${condition2}">
    ...
  </c:when>
  <c:otherwise>
    ...
  </c:otherwise>
</c:choose>

5 votes

Mis à part la balise wrapper (choisir), je ne vois pas en quoi cela est plus verbeux que if/elseif/else. Une balise wrapper peut difficilement être qualifiée de "maladroite", non ?

21 votes

@Steven : C'est la nature XML de celui-ci. Il y a plus de caractères dans le texte passe-partout que dans la logique réelle.

2 votes

Ah, ok. On pourrait faire de même pour <c:if/> à ce moment-là aussi.

106voto

laksys Points 920

En plus de la réponse de Skaffman, un simple if-else, vous pouvez utiliser l'opérateur ternaire comme ceci

<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>

6 votes

Il s'agit d'une bonne réponse, mais son utilité est fortement liée à la situation.

51voto

Il n'y a pas de "if-else", juste "if".

<c:if test="${user.age ge 40}">
 You are over the hill.
</c:if>

En option, vous pouvez utiliser l'option "choisir quand" :

<c:choose>
  <c:when test="${a boolean expr}">
    do something
  </c:when>
  <c:when test="${another boolean expr}">
    do something else
  </c:when>
  <c:otherwise>
    do this when nothing else is true
  </c:otherwise>
</c:choose>

27voto

jonk Points 1446

Je m'en suis sorti en utilisant simplement deux balises if, mais j'ai pensé ajouter une réponse au cas où elle serait utile à quelqu'un d'autre :

<c:if test="${condition}">
  ...
</c:if>
<c:if test="${!condition}">
  ...
</c:if>

bien qu'il ne s'agisse pas techniquement d'un if-else à proprement parler, le comportement est le même et permet d'éviter l'approche maladroite consistant à utiliser la fonction choose En fonction de la complexité de vos besoins, cela peut être préférable.

7voto

Mayank Points 11

Oui, vous pouvez utiliser <c:choose tag comme :

<c:choose> 
  <c:when test="${condition}">
    //this will be executed when condition is true
  </c:when>
  <c:otherwise>
    //this will be executed when condition is false
  </c:otherwise>
</c:choose>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X