web-dev-qa-db-fra.com

Comment utiliser l'option if-else dans JSTL

Existe-t-il une balise if-else disponible dans JSTL?

315
Srinivasan

Oui, mais c'est maladroit, par exemple.

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

Pour des cas simples, vous pouvez utiliser un opérateur ternaire comme celui-ci

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

Il n'y a pas de si-sinon, juste si.

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

Vous pouvez éventuellement utiliser le choix de 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>
45
user1418225

Je m'en suis tiré simplement en utilisant deux balises if, en pensant que j'ajouterais une réponse au cas où cela serait utile à quelqu'un d'autre:

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

bien que ce ne soit techniquement pas un if-else, le comportement est identique et évite l’approche désagréable de l’utilisation de la balise choose. Par conséquent, en fonction de la complexité de vos besoins, cela peut être préférable.

23
jonk

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>
4
ankit