2011-01-03 5 views

Antwort

467

Ja, aber es ist klobig wie die Hölle, z.B. keine if-else, nur wenn

<c:choose> 
    <c:when test="${condition1}"> 
    ... 
    </c:when> 
    <c:when test="${condition2}"> 
    ... 
    </c:when> 
    <c:otherwise> 
    ... 
    </c:otherwise> 
</c:choose> 
+5

Abgesehen von dem Wrapper-Tag (wählen), ich sehe nicht, wie diese nicht mehr ausführlich ist, als wenn/elseif/sonst wäre es. Ein Wrapper-Tag ist kaum "klobig wie die Hölle", oder? –

+16

@steven: Es ist die XML-Natur davon. Es gibt mehr Zeichen im Textbaustein als in der tatsächlichen Logik. – skaffman

+2

Ah, ok. Dasselbe könnte dann auch für "" eingestellt werden. –

89

Für einfache if-else Sie ternären Operator wie diese

<c:set value="34" var="num"/> 
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/> 
+4

Dies ist eine gute Antwort, aber ist sehr situationsbezogen für wie nützlich es wäre. –

38

ist es verwenden können.

<c:if test="${user.age ge 40}"> 
You are over the hill. 
</c:if> 

Optional können Sie verwenden, wählen-wenn:

<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

Hallo @iwxfer, dein oben stehender Link ist momentan nicht verfügbar, bitte update, wenn du kannst wie du gut punktest, sonst weise es entfernen. – Ajay2707

17

Ich kam mit nur zwei zu verwenden, wenn Tags, dachte ich, falls eine Antwort hinzufügen würde es sonst der Nutzen für jeden ist:

<c:if test="${condition}"> 
    ... 
</c:if> 
<c:if test="${!condition}"> 
    ... 
</c:if> 

während technisch nicht if-else per se, ist das gleiche Verhalten und vermeidet den klobigen Ansatz der Verwendung des choose Tag, so dass je nachdem, wie komplex Ihre Anforderung ist dies könnte vorzuziehen sein.

+4

downvoter Bitte Kommentar – jonk

+1

Betrachten Sie den Fall, wenn die Bedingung etwas kompliziert und hässlich ist wie $ {nicht param.age gt 42 und someOtherVar eq 'foobar'}. Sie müssten die Bedingung in einer temporären booleschen Variablen speichern, so dass Sie eine! Condition ausführen oder die Umkehrung dieser Bedingung schreiben könnten. Beide hässlich. Die "andere" Syntax ist eine garantierte Inverse. –

+2

Tatsächlich würde eine komplexe Bedingung entweder eine lokale Variable oder das Schreiben der Umkehrung erfordern, aber beide dieser Optionen würden immer noch funktionieren. Ich stellte klar, dass es davon abhängen würde, wie komplex die Anforderung ist, ob dieser Ansatz dem "Wählen" -Tag vorzuziehen wäre. – jonk

1

Sie haben diesen Code zu verwenden:

mit <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>

und

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