18 Stimmen

Korrekte Syntax für den Vergleich von Werten in JSTL <c:if test="${values.type}=='object'">

Ich habe eine if Anweisung, die ich mit JSTL auszuführen versuche.

Mein Code ist unten (die Variablen Werte ist eine ArrayList, die ein benutzerdefiniertes Objekt enthält und Typ ist eine private Eigenschaft des Objekts, mit öffentlichen Getter/Setter-Methoden):

<c:forEach items="${list}" var="values">
    <c:if test="${values.type}=='object'">
        <!-- code here -->
    </c:if>
</c:forEeach>

Wie lautet die korrekte Syntax für den Teil innerhalb der test Attribut. Die Dokumentation hilft bei diesem Teil nicht wirklich weiter http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html

Merci.

47voto

BalusC Punkte 1034465

Der Vergleich muss innerhalb von EL vollständig ausgewertet werden. ${ ... } , nicht außerhalb.

<c:if test="${values.type eq 'object'}">

Was die Dokumente betrifft, so sind diese ${} Dinge sind nicht JSTL, sondern EL (Expression Language), was ein ganz eigenes Thema ist. JSTL (wie auch jede andere JSP-Taglib) nutzt es nur aus. Sie können einige weitere EL-Beispiele finden aquí .

<c:if test="#{bean.booleanValue}" />
<c:if test="#{bean.intValue gt 10}" />
<c:if test="#{bean.objectValue eq null}" />
<c:if test="#{bean.stringValue ne 'someValue'}" />
<c:if test="#{not empty bean.collectionValue}" />
<c:if test="#{not bean.booleanValue and bean.intValue ne 0}" />
<c:if test="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Siehe auch:


Übrigens, unabhängig von dem konkreten Problem, wenn ich Ihre Absicht richtig einschätze, könnten Sie auch einfach aufrufen Object#getClass() und dann Class#getSimpleName() anstatt einen eigenen Getter hinzuzufügen.

<c:forEach items="${list}" var="value">
    <c:if test="${value['class'].simpleName eq 'Object'}">
        <!-- code here -->
    </c:if>
</c:forEeach>

Siehe auch:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X