Тернарный оператор в 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"%>