Abgesehen vom Wrapper-Tag (wählen) sehe ich nicht, wie ausführlich dies ist, als wenn / elseif / else wäre. Ein Wrapper-Tag ist kaum "klobig wie die Hölle", oder?
Steven Benitez
19
@Steven: Es ist die XML-Natur davon. Das Boilerplate enthält mehr Zeichen als die eigentliche Logik.
Skaffman
2
Ah, ok. Das gleiche könnte auch dann eingestellt <c:if/>werden.
Steven Benitez
15
Ich weiß, dass ich ein bisschen zu spät zur Party komme, aber es <c:otherwise>scheint ein bisschen wortreich zu sein, oder?
Andronikus
6
Beginnen Sie mit der Verschachtelungslogik mit angemessener Einrückung und klobig wie die Hölle wird eine zu freundliche Beschreibung sein.
Adam Tolley
105
Zusätzlich mit Skaffman Antwort, einfach wenn-sonst können Sie ternären Operator wie diesen verwenden
Dies ist eine gute Antwort, aber sehr situativ, wie nützlich es wäre.
Mike LP
47
Es gibt kein Wenn-Sonst, nur wenn.
<c:iftest="${user.age ge 40}">
You are over the hill.
</c:if>
Optional können Sie wählen, wann:
<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>
Hallo @iwxfer, Ihr obiger Link ist momentan nicht verfügbar. Bitte aktualisieren Sie ihn, wenn Sie so gut wie möglich punkten können. Andernfalls entfernen Sie ihn.
Ajay2707
25
Ich bin damit durchgekommen, einfach zwei if-Tags zu verwenden, und dachte, ich würde eine Antwort hinzufügen, falls sie für andere von Nutzen ist:
Obwohl dies technisch gesehen an sich kein if-elseProblem ist, ist das Verhalten dasselbe und vermeidet den umständlichen Ansatz bei der Verwendung des chooseTags. Je nachdem, wie komplex Ihre Anforderung ist, ist dies möglicherweise vorzuziehen.
Betrachten Sie den Fall, in dem die Bedingung etwas Kompliziertes und Hässliches ist, wie $ {not param.age gt 42 und someOtherVar eq 'foobar'}. Sie müssten die Bedingung in einer temporären booleschen Variablen speichern, damit Sie! Condition ausführen oder die Umkehrung dieser Bedingung schreiben können. Beides hässlich. Die "sonst" -Syntax ist eine garantierte Umkehrung.
Matt brennt
3
In der Tat würde eine komplexe Bedingung entweder eine lokale Variable oder das Schreiben der Umkehrung erfordern, aber beide Optionen würden immer noch funktionieren. Ich habe klargestellt, dass es davon abhängen würde, wie komplex die Anforderung ist, ob dieser Ansatz dem chooseTag vorzuziehen wäre .
Jonk
2
Ich stimme dem zu. Wenn Sie nur eine andere haben, ist es weniger markeup als mit c: select
javaMoca
1
Es gibt einen weiteren zusätzlichen Vorteil von <c: if test = "$ {condition} == true"> und <c: if test = "$ {condition == false}">. Wenn die Variable null ist (nicht initialisiert), wird keine Verzweigung ausgeführt, was gut ist. Wenn Sie mit <c: select> und <c: when> arbeiten, wird der falsche Zweig ausgeführt, wenn die Variable null ist.
Steve Stilson
3
Sie müssen diesen Code verwenden:
mit <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
Dies ist ein guter und effizienter Ansatz für die zeitliche Komplexität. Sobald es einen wahren Zustand erreicht hat, wird es danach keine weiteren prüfen. In mehreren If wird jedes und jede Bedingung überprüft.
<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>
Antworten:
Ja, aber es ist höllisch klobig, z
quelle
<c:if/>
werden.<c:otherwise>
scheint ein bisschen wortreich zu sein, oder?Zusätzlich mit Skaffman Antwort, einfach wenn-sonst können Sie ternären Operator wie diesen verwenden
quelle
Es gibt kein Wenn-Sonst, nur wenn.
Optional können Sie wählen, wann:
quelle
Ich bin damit durchgekommen, einfach zwei if-Tags zu verwenden, und dachte, ich würde eine Antwort hinzufügen, falls sie für andere von Nutzen ist:
Obwohl dies technisch gesehen an sich kein
if-else
Problem ist, ist das Verhalten dasselbe und vermeidet den umständlichen Ansatz bei der Verwendung deschoose
Tags. Je nachdem, wie komplex Ihre Anforderung ist, ist dies möglicherweise vorzuziehen.quelle
choose
Tag vorzuziehen wäre .Sie müssen diesen Code verwenden:
mit
<%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
und
quelle
Dies ist ein guter und effizienter Ansatz für die zeitliche Komplexität. Sobald es einen wahren Zustand erreicht hat, wird es danach keine weiteren prüfen. In mehreren If wird jedes und jede Bedingung überprüft.
quelle