2011-01-03 14 views

Odpowiedz

467

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> 
+5

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? –

+16

@Steven: Ma to charakter XML. Na boardzie znajduje się więcej znaków niż w rzeczywistej logice. – skaffman

+2

Ah, ok. To samo można ustawić także dla ''. –

89

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'}"/> 
+4

To jest dobra odpowiedź, ale jest wysoce sytuacyjna, jeśli chodzi o jej przydatność. –

38

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> 
+0

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

17

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.

+4

downvoter, prosimy o komentarz – jonk

+1

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ą. –

+2

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

1

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>