Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 4 da Aula 2 - Tomando decisões

Ola fiquei com uma dúvida, como vimos não tem if e else na jstl então podemos fazer de duas maneiras:

<c:if test="${p.usado}">
    <td>Sim</td> 
</c:if>
<c:if test="${not p.usado}">
    <td>Não</td> 
</c:if>

Onde negamos o outro if, ou utilizando o choose:

<c:choose>
    <c:when test="${p.usado}">
        <td>Sim</td>
    </c:when>
    <c:when test="${not p.usado}">
        <td>Não</td>
    </c:when>
    <c:otherwise>
        <td>Nenhum dos when</td>    
    </c:otherwise>
</c:choose>

Porém queria saber se o choose varre todos os when na hora que executa? Pois se tiver muitos pode ficar pesado, queria algo como um switch, onde encontrou algo sai do comando, ou if, else if e else, onde eles estao alinhados, achou uma resposta nem vai para as outras, alguem sabe algo sobre isso? Mais a titulo de curiosidade mesmo :)

3 respostas

Olá, amigo!

Boa dúvida. Analisando a documentação da JSTL Core, de fato não encontrei nenhuma tag que nos dá a função de break;.

Infelizmente nesse caso, se o <c:choose>possuir várias condições, ele testará uma a uma, mesmo que a primeira condição já atenda o que precisamos e realmente pode haver um overhead.

Abraços!

solução!

Olá Guilherme!

A tag choose da taglib core funciona como um switch mesmo! Como diz na documentação que o Rodrigo mandou, a tag choose funciona como "uma tag codicional simples, com operações/condições mutualmente exclusivas", ou seja, se a condição de uma tag when for satisfeita, nenhuma outra condição será, então acho que faz bastante sentido parar de varrer as outras condições no momento em que uma for satisfeita.

Perfeito Ana, não sabia que ele saia como no switch, achei que varria todas as opções, valeu :)