Тернарный оператор в JSTL / EL

Следующий тег JSTL можно использовать для установки значения переменной в области запроса.

<c:set var="value" scope="request" value="someValue"/>

Я хочу проверить условно, если переменнаяvalue быть установленным пустым или нет и отображать результат соответственно что-то вроде следующего, используя<c:when>...</c:when>.

<c:choose>
    <c:when test="${not empty value}">
        <c:out default="None" value="${value}"/>
    </c:when>
    <c:otherwise>
        <c:out default="None" value="None"/>
    </c:otherwise>
</c:choose>

Я хочу уменьшить строку кода, используя троичное выражение, как,

<c:out default="None" value="${not empty value ? value : 'None'}"/>

Он оценивается так, как он есть на самом деле, но если я поменяю порядок выражений вроде

<c:out default="None" value="${empty value ? 'None' : value}"/>

тогда это синтаксическая ошибка, указывающая,

"$ {empty value? 'None': value}" содержит недопустимые выражения: javax.el.ELException: Ошибка синтаксического анализа: $ {empty value? 'None': value}

Так почему это происходит?

Я используюJSTL 1.1 библиотека и следующий taglib включены,

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Ответы на вопрос(1)

Ваш ответ на вопрос