Aparte de la etiqueta del contenedor (elegir), no veo cómo esto es más detallado de lo que sería / elseif / else. Una etiqueta de envoltorio apenas constituye "torpe como el infierno", ¿no?
Steven Benitez
19
@ Steven: es la naturaleza XML de la misma. Hay más personajes en el repetitivo que en la lógica real.
skaffman
2
Ah ok Lo mismo podría establecerse para <c:if/>entonces, también.
Steven Benitez
15
Sé que llego un poco tarde a la fiesta, pero <c:otherwise>parece un poco detallado, ¿eh?
andronikus
66
Comience a anidar la lógica con sangría adecuada y torpe como el infierno parecerá una descripción demasiado amable.
Adam Tolley
105
Además de la respuesta de skaffman, si no, puede usar un operador ternario como este
Esta es una buena respuesta, pero es altamente situacional por lo útil que sería.
Mike LP el
47
No hay if-else, solo if.
<c:iftest="${user.age ge 40}">
You are over the hill.
</c:if>
Opcionalmente puede usar elegir cuándo:
<c:choose><c:whentest="${a boolean expr}">
do something
</c:when><c:whentest="${another boolean expr}">
do something else
</c:when><c:otherwise>
do this when nothing else is true
</c:otherwise></c:choose>
Aunque técnicamente no es un if-elseper se, el comportamiento es el mismo y evita el enfoque torpe de usar la chooseetiqueta, por lo que, dependiendo de cuán complejo sea su requisito, esto podría ser preferible.
Considere el caso cuando la condición es algo complicado y feo como $ {not param.age gt 42 y someOtherVar eq 'foobar'}. Tendría que almacenar la condición en una variable booleana temporal para poder hacer la condición !, o escribir el inverso de esa condición. Ambos feos. La sintaxis "de lo contrario" es un inverso garantizado.
Matt arde
3
De hecho, una condición compleja requeriría una variable local o escribir el inverso, pero ambas opciones seguirían funcionando. Aclaré que dependería de cuán complejo sea el requisito de si este enfoque sería preferible a la chooseetiqueta.
jonk
2
Estoy de acuerdo con ésto. Si solo tiene uno más, es menos marketing que usar c: elegir
javaMoca
1
Hay otro beneficio adicional de tener <c: if test = "$ {condition} == true"> y <c: if test = "$ {condition == false}">. Cuando la variable es nula (no inicializada), no se ejecuta ninguna rama, lo cual es bueno. Si usa <c: choose> y <c: when>, la rama falsa se ejecutará cuando la variable sea nula.
Steve Stilson
3
tienes que usar este código:
con <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
Este es un enfoque bueno y eficiente según la perspectiva de complejidad temporal. Una vez que obtenga una condición verdadera, no verificará ninguna otra después de esto. En múltiples If, verificará cada uno y condición.
<c:choose><c:whentest="${condtion1}">
do something condtion1
</c:when><c:whentest="${condtion2}">
do something condtion2
</c:when>
......
......
......
.......
<c:whentest="${condtionN}">
do something condtionn N
</c:when><c:otherwise>
do this w
</c:otherwise></c:choose>
Respuestas:
Sí, pero es torpe como el infierno, por ejemplo
fuente
<c:if/>
entonces, también.<c:otherwise>
parece un poco detallado, ¿eh?Además de la respuesta de skaffman, si no, puede usar un operador ternario como este
fuente
No hay if-else, solo if.
Opcionalmente puede usar elegir cuándo:
fuente
Me salí con la simple utilización de dos etiquetas if, pensé que agregaría una respuesta en caso de que sea útil para alguien más:
Aunque técnicamente no es un
if-else
per se, el comportamiento es el mismo y evita el enfoque torpe de usar lachoose
etiqueta, por lo que, dependiendo de cuán complejo sea su requisito, esto podría ser preferible.fuente
choose
etiqueta.tienes que usar este código:
con
<%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
y
fuente
Este es un enfoque bueno y eficiente según la perspectiva de complejidad temporal. Una vez que obtenga una condición verdadera, no verificará ninguna otra después de esto. En múltiples If, verificará cada uno y condición.
fuente