Czy w JSTL dostępny jest znacznik if-else?Jak korzystać z opcji else w JSTL
Odpowiedz
Tak, ale jest niezręczny jak cholera, np.
<c:choose>
<c:when test="${condition1}">
...
</c:when>
<c:when test="${condition2}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
Dla prosty if-else można użyć operatora potrójny jak ten
<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>
To jest dobra odpowiedź, ale jest wysoce sytuacyjna, jeśli chodzi o jej przydatność. –
Nie ma if-else, tylko wtedy, gdy.
<c:if test="${user.age ge 40}">
You are over the hill.
</c:if>
Opcjonalnie można użyć wybrać, gdy:
<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>
Witaj, @iwxfer, powyższy link nie jest już dostępny, proszę zaktualizować, jeśli potrafisz, jeśli masz dobry wynik, w inny sposób go usuń. – Ajay2707
mi się upiekło prostu za pomocą dwóch czy znaczniki, myślałem, że dodać odpowiedź w przypadku jest to przydatne dla kogoś innego:
<c:if test="${condition}">
...
</c:if>
<c:if test="${!condition}">
...
</c:if>
natomiast technicznie nie jest if-else
per se, zachowanie jest takie samo i unika przylegający podejście za pomocą znacznika choose
, więc w zależności od sposobu kompleks Twój wymogiem jest to może być lepsze.
downvoter, prosimy o komentarz – jonk
Rozważmy przypadek, gdy warunek jest czymś skomplikowanym i brzydkim jak $ {not param.age gt 42 i someOtherVar eq 'foobar'}. Trzeba by zapisać warunek w tymczasowej zmiennej boolowskiej, aby można było wykonać warunek lub zapisać odwrotność tego warunku. Oba brzydkie. Składnia "inaczej" jest gwarantowaną odwrotnością. –
Rzeczywiście złożony warunek wymagałby zmiennej lokalnej lub pisania odwrotnego, ale obie te opcje nadal działałyby. Wyjaśniłem, że zależy to od tego, jak skomplikowane jest wymaganie, czy to podejście byłoby lepsze od tagu 'choose'. – jonk
trzeba użyć tego kodu:
z <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
i
<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>
oprócz znacznika otoki (wybierz), ja nie wiem, jak to jest bardziej gadatliwy niż gdyby/elseif/else będzie. Jedna etykieta owijki prawie nie jest "przysadzistą jak cholera", nie? –
@Steven: Ma to charakter XML. Na boardzie znajduje się więcej znaków niż w rzeczywistej logice. – skaffman
Ah, ok. To samo można ustawić także dla ' '. –