Кроме тега-обертки (выберите), я не вижу, насколько это более многословно, чем если бы / elseif / else было бы. Одна метка-обертка вряд ли представляет собой «неуклюжий как ад», не так ли?
Стивен Бенитес
19
@Steven: Это XML природа этого. В шаблоне больше символов, чем в реальной логике.
Скаффман
2
Ах хорошо. То же самое можно было бы установить и <c:if/>тогда.
Стивен Бенитес
15
Я знаю, что немного опоздал на вечеринку, но, <c:otherwise>кажется, немного многословен, а?
andronikus
6
начните раскручивать логику с соответствующих отступов и неуклюжих, поскольку ад покажется слишком любезным описанием.
Адам Толи
105
В дополнение к ответу Скаффмана, просто если-иначе вы можете использовать троичный оператор, как это
Это хороший ответ, но он очень ситуативный, насколько он будет полезен.
Майк LP
47
Здесь нет if-else, просто если.
<c:iftest="${user.age ge 40}">
You are over the hill.</c:if>
При желании вы можете использовать выбор когда:
<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>
хотя технически это не if-elseсамо по себе, поведение такое же и избегает неуклюжего подхода использования chooseтега, поэтому в зависимости от сложности ваших требований это может быть предпочтительнее.
Рассмотрим случай, когда условие является чем-то сложным и безобразным, например, $ {not param.age gt 42 и someOtherVar eq 'foobar'}. Вам нужно будет сохранить условие во временную логическую переменную, чтобы вы могли выполнить условие! Или записать обратное условие. Оба безобразны. Синтаксис «иначе» является гарантированным обратным.
Мэтт горит
3
Действительно, для сложного условия потребуется либо локальная переменная, либо запись обратного, но оба эти параметра будут работать. Я пояснил, что это будет зависеть от того, насколько сложным является требование относительно того, будет ли этот подход предпочтительнее chooseтега.
Йонк
2
Я согласен с этим. Если у вас есть только один, его наценка меньше, чем при использовании c: выбрать
javaMoca
1
Есть еще одно дополнительное преимущество: наличие <c: if test = "$ {условие} == true"> и <c: if test = "$ {условие == false}">. Когда переменная равна нулю (не инициализирована), ни одна ветвь не выполняется, что хорошо. Если вы выберете <c: choose> и <c: when>, ложная ветвь будет выполнена, когда переменная равна нулю.
Стив Стилсон
3
Вы должны использовать этот код:
с участием <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
Это хороший и эффективный подход с точки зрения временной сложности. Как только он получит истинное состояние, он не будет проверять другие после этого. В нескольких случаях, он будет проверять каждое условие.
<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>
Ответы:
Да, но это чертовски неуклюже, например
источник
<c:if/>
тогда.<c:otherwise>
кажется, немного многословен, а?В дополнение к ответу Скаффмана, просто если-иначе вы можете использовать троичный оператор, как это
источник
Здесь нет if-else, просто если.
При желании вы можете использовать выбор когда:
источник
Мне просто удалось использовать два тега if, и я решил добавить ответ, если он кому-нибудь пригодится:
хотя технически это не
if-else
само по себе, поведение такое же и избегает неуклюжего подхода использованияchoose
тега, поэтому в зависимости от сложности ваших требований это может быть предпочтительнее.источник
choose
тега.Вы должны использовать этот код:
с участием
<%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>
и
источник
Это хороший и эффективный подход с точки зрения временной сложности. Как только он получит истинное состояние, он не будет проверять другие после этого. В нескольких случаях, он будет проверять каждое условие.
источник