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"%>