Ternärer Operator in JSTL / EL

Mit dem folgenden JSTL-Tag können Sie einen Wert für eine Variable in einem Anforderungsbereich festlegen.

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

Ich möchte bedingt prüfen, ob die Variablevalue gesetzt ist leer oder nicht und zeigt das Ergebnis wie folgt an:<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>

Ich möchte die Codezeile mit einem ternären Ausdruck wie

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

Es wird ausgewertet, wie es tatsächlich bedeutet, aber wenn ich die Reihenfolge der Ausdrücke vertausche,

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

dann ist es ein Syntaxfehler, der anzeigt,

"$ {leerer Wert? 'None': value}" enthält ungültige Ausdrücke: javax.el.ELException: Fehleranalyse: $ {leerer Wert? 'None': value}

Warum passiert das?

Ich benutze dieJSTL 1.1 Bibliothek und die folgende Taglib ist enthalten,

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage