Ternärer Operator in JSTL / EL
Den folgenden Tags der JSTL verwendet werden können, um einen Wert einer variable im request-scope.
<c:set var="value" scope="request" value="someValue"/>
Ich überprüfen wollen, bedingt, wenn die variable value
festgelegt wird, leer ist oder nicht und zeigt das Resultat entsprechend etwas wie das folgende, 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>
Möchte ich reduzieren die code-Zeile mit einem ternäre Ausdrücke wie,,
<c:out default="None" value="${not empty value ? value : 'None'}"/>
Es wird ausgewertet, wie es eigentlich bedeutet, aber wenn ich das vertauschen der Reihenfolge der Ausdrücke wie,
<c:out default="None" value="${empty value ? 'None' : value}"/>
dann ist es ein syntax-Fehler, der angibt,
"${leer Wert?'None':Wert}" enthält ungültige Ausdruck(s):
javax.el.ELException: Fehler beim Analysieren: ${leer Wert?'None':Wert,}
So, warum geschieht das?
Ich bin mit der JSTL 1.1
Bibliothek und die folgenden taglib enthalten ist,
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
InformationsquelleAutor der Frage Tiny | 2013-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Getestet habe ich die folgende Seite im Tomcat 5.59, JSP 2.0 und JSTL 1.1. Es lief ohne Fehler.
InformationsquelleAutor der Antwort rickz