2011-01-03 2 views

Répondre

467

Oui, mais c'est un peu maladroit, par exemple.

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

En dehors de l'étiquette d'emballage (choisir), je ne vois pas comment cela est plus bavard que si/elseif/else serait. Une étiquette d'emballage constitue à peine «maladroite comme l'enfer», non? –

+16

@Steven: C'est la nature XML de celui-ci. Il y a plus de caractères dans le passe-partout que dans la logique actuelle. – skaffman

+2

Ah, d'accord. La même chose pourrait être réglée pour '' alors, aussi. –

89

Pour simple si-que vous pouvez utiliser l'opérateur ternaire comme celui-ci

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

C'est une bonne réponse, mais elle est très pertinente pour son utilité. –

38

Il n'y a pas si-else, juste si.

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

vous pouvez éventuellement utiliser choose-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> 
+0

Salut @iwxfer, votre lien ci-dessus n'est pas disponible dès maintenant, s'il vous plaît mettre à jour, si vous pouvez comme vous bon score, d'autres sage l'enlever. – Ajay2707

17

Je suis parti avec simplement en utilisant deux si les étiquettes, pensé que je voudrais ajouter une réponse au cas où il est utile à quelqu'un d'autre:

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

alors que techniquement pas un if-else en soi, le comportement est le même et évite l'approche maladroite d'utiliser la balise choose, donc en fonction de la complexité de votre exigence est la pourrait être préférable.

+4

downvoter s'il vous plaît commenter – jonk

+1

Considérons le cas où la condition est quelque chose de compliqué et laide comme $ {pas param.age gt 42 et someOtherVar eq 'foobar'}. Vous devriez stocker la condition dans une variable booléenne temporaire afin que vous puissiez faire! Condition, ou écrire l'inverse de cette condition. Les deux moche. La syntaxe "sinon" est un inverse garanti. –

+2

En effet, une condition complexe nécessiterait soit une variable locale soit l'écriture de l'inverse, mais ces deux options fonctionneraient toujours. J'ai précisé que cela dépendrait de la complexité de l'exigence quant à savoir si cette approche serait préférable à l'étiquette «choisir». – jonk

1

vous devez utiliser ce code:

avec <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>

et

<c:select> 
      <option value="RCV" 
       ${records[0].getDirection() == 'RCV' ? 'selected="true"' : ''}> 
       <spring:message code="dropdown.Incoming" text="dropdown.Incoming" /> 
      </option> 
      <option value="SND" 
       ${records[0].getDirection() == 'SND'? 'selected="true"' : ''}> 
       <spring:message code="dropdown.Outgoing" text="dropdown.Outgoing" /> 
      </option> 
     </c:select>