В чем разница между <c: if> и <c: when>?

Я заметил использование <c:if ...> в одном месте кода JSP и <c:when ...> в другом. То, что они делают, выглядит одинаково для меня. Являются ли эти две команды просто псевдонимами?

Ответы

Ответ 1

<c:if является простым if-предложением. <c:when> имеет опции для нескольких if-clauses и else. Для сравнения:

<c:if test="${foo == 'bar'}">...</c:if>

с

<c:choose>
   <c:when test="${foo == 'bar'}">...</c:when>
   <c:when test="${foo == 'baz'}">...</c:when>
   <c:otherwise>...</c:otherwise>
</c:choose>

Ответ 2

<c:if> не поддерживает никаких функций "else" или "else if". <c:when> делает. Поэтому, если вам нужно что-то похожее на

if (some_condition) {
    // ...
}

затем используйте <c:if>. Если вам нужно что-то похожее на

if (some_condition) {
    // ...
} else if (some_other_condition) {
    // ...
} else {
    // ...
}

затем используйте <c:choose> с <c:when> и (необязательно) <c:otherwise>.