2011-01-03 68 views

Respuesta

467

Sí, pero es torpe como el infierno, p.

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

Aparte de la etiqueta de envoltura (elegir), no veo cómo esto es más detallado que si/elseif/else sería. Una etiqueta de envoltura difícilmente constituye "torpe como el infierno", ¿no? –

+16

@Steven: es la naturaleza XML de la misma. Hay más personajes en la repetición que en la lógica real. – skaffman

+2

Ah, está bien. Lo mismo podría establecerse para '' y luego también. –

89

Por simple si-else puede utilizar operador ternario como esto

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

Esta es una buena respuesta, pero es altamente situacional por lo útil que sería. –

38

No hay si-más, sólo si.

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

Opcionalmente se puede utilizar elegir -cuando:

<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

Hola @iwxfer, tu enlace de arriba no está disponible en este momento, por favor actualiza, si puedes como buena puntuación, de lo contrario quítalo. – Ajay2707

17

me escapé con el simple uso de dos si las etiquetas, que me gustaría añadir una respuesta en caso de que sea de utilidad para cualquier otra persona:

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

, mientras que técnicamente no es un if-else per se, el comportamiento es el mismo y evita el enfoque torpe de la utilización de la etiqueta choose, por lo que dependiendo de la complejidad de su requerimiento es este podría ser preferible

+4

downvoter comente – jonk

+1

Considere el caso cuando la condición es algo complicado y feo como $ {no param.age gt 42 y someOtherVar eq 'foobar'}. Tendría que almacenar la condición en una variable booleana temporal para que pueda hacer una condición, o escribir el inverso de esa condición. Ambos feos. La sintaxis de "lo contrario" es una inversa garantizada. –

+2

De hecho, una condición compleja requeriría una variable local o escribir la inversa, pero ambas opciones seguirían funcionando. Aclaré que dependerá de qué tan complejo sea el requisito en cuanto a si este enfoque sería preferible a la etiqueta 'choose'. – jonk

1

que tienen que utilizar este código:

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

y

<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> 
Cuestiones relacionadas