Além da tag wrapper (escolha), não vejo como isso é mais detalhado do que seria se / elseif / else. Uma etiqueta de embalagem dificilmente constitui "desajeitada como o inferno", não?
Steven Benitez
19
@ Steven: É a natureza XML dele. Há mais caracteres no clichê do que na lógica real.
21411 skype-em-
2
Ah ok. O mesmo poderia ser definido para <c:if/>então também.
Steven Benitez
15
Eu sei que estou um pouco atrasado para a festa, mas <c:otherwise>parece um pouco detalhado, não é?
andronikus
6
comece a aninhar a lógica com recuo apropriado e desajeitado como o inferno parecerá uma descrição muito gentil.
precisa
105
Além da resposta skaffman, simples se-else você pode usar um operador ternário como este
Essa é uma boa resposta, mas é altamente situacional para quão útil seria.
Mike LP
47
Não há se-mais, apenas se.
<c:iftest="${user.age ge 40}">
You are over the hill.
</c:if>
Opcionalmente, você pode usar escolher quando:
<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>
Embora tecnicamente não seja if-elseper se, o comportamento é o mesmo e evita a abordagem desajeitada de usar a choosetag; portanto, dependendo da complexidade do seu requisito, isso pode ser preferível.
Considere o caso em que a condição é algo complicado e feio como $ {not param.age gt 42 e someOtherVar eq 'foobar'}. Você precisaria armazenar a condição em uma variável booleana temporária para poder fazer a condição! Ou escrever o inverso dessa condição. Ambos feios. A sintaxe "caso contrário" é um inverso garantido.
Matt queima
3
De fato, uma condição complexa exigiria uma variável local ou escrever o inverso, mas ambas as opções ainda funcionariam. Esclareci que dependeria de quão complexo é o requisito para saber se essa abordagem seria preferível à choosemarca.
jonk
2
Eu concordo com isto. Se você tiver apenas mais um, é menos fácil usar c: choose
javaMoca
1
Há outro benefício adicional de ter <c: if test = "$ {condition} == true"> e <c: if test = "$ {condition == false}">. Quando a variável é nula (não inicializada), nenhuma ramificação é executada, o que é bom. Se você escolher <c: escolha> e <c: quando>, o ramo falso será executado quando a variável for nula.
Steve Stilson
3
você precisa usar este código:
com <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
Essa é uma abordagem boa e eficiente conforme a perspectiva de complexidade de tempo. Depois de obter uma condição verdadeira, não será verificada nenhuma outra após isso. Em múltiplos If, ele verificará cada condição.
<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>
Respostas:
Sim, mas é desajeitado como o inferno, por exemplo
fonte
<c:if/>
então também.<c:otherwise>
parece um pouco detalhado, não é?Além da resposta skaffman, simples se-else você pode usar um operador ternário como este
fonte
Não há se-mais, apenas se.
Opcionalmente, você pode usar escolher quando:
fonte
Eu simplesmente usei duas tags if, pensei em adicionar uma resposta, caso seja útil para qualquer outra pessoa:
Embora tecnicamente não seja
if-else
per se, o comportamento é o mesmo e evita a abordagem desajeitada de usar achoose
tag; portanto, dependendo da complexidade do seu requisito, isso pode ser preferível.fonte
choose
marca.você precisa usar este código:
com
<%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
e
fonte
Essa é uma abordagem boa e eficiente conforme a perspectiva de complexidade de tempo. Depois de obter uma condição verdadeira, não será verificada nenhuma outra após isso. Em múltiplos If, ele verificará cada condição.
fonte