Das folgende Tag von JSTL kann verwendet werden, um einen Wert für eine Variable in einem Anforderungsbereich festzulegen.Ternärer Operator in JSTL/EL
<c:set var="value" scope="request" value="someValue"/>
Ich möchte bedingt überprüfen, ob die Variable value
gesetzt wird leer ist oder nicht, und das Ergebnis entsprechend etwa wie folgt angezeigt werden, mit <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 reduzieren, um einen ternären Ausdruck verwenden wie,
<c:out default="None" value="${not empty value ? value : 'None'}"/>
Es wird ausgewertet, wie es eigentlich bedeutet, aber wenn ich vertauschen die Reihenfolge der Ausdrücke wie,
<c:out default="None" value="${empty value ? 'None' : value}"/>
dann ist es ein Syntaxfehler anzeigt,
"$ {empty Wert 'None': Wert}" enthält ungültigen Ausdruck (e): javax.el.ELException: Fehler beim Analysieren von: $ {empty Wert 'None': Wert}
Warum passiert das?
Ich verwende die JSTL 1.1
Bibliothek und die folgenden taglib enthalten sind,
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Ich habe Ihren Code kopiert und eingefügt und es funktioniert für mich ohne Fehler. – rickz
@rickz - Es ** könnte ** das Problem mit der Bibliotheksversion von JSTL sein, die ich verwende. Welche Bibliothek verwendest du? – Tiny
Ich benutze 1.2. – rickz