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

Schreibe einen Kommentar