Следующий тег 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}"/>
то это синтаксическая ошибка, указывающая,
"$ {пустое значение? 'None': значение}" содержит недопустимые выражения: javax.el.ELException: Анализ ошибок: ${пустое значение? 'None': значение}
Так почему это происходит?
Я использую библиотеку JSTL 1.1
и включен следующий taglib,
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>