Frage

Ich sah einige Code wie folgt in einer JSP

<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
    <li>user</li>
</c:if>

Meine Verwirrung ist über die „=“, die in dem Wert des test Attribut erscheint. Mein Verständnis war, dass innerhalb <%= %> enthielt alles, was mit dem Ausgang gedruckt wird, aber sicher der Wert Test zugewiesen muss ein Boolean sein, also warum funktioniert das?

Für Bonuspunkte gibt es eine Möglichkeit, den Attributwert über so zu ändern, dass es nicht scriptlet Code nicht verwendet? Vermutlich das bedeutet, unter Verwendung von EL statt.

Cheers, Don

War es hilfreich?

Lösung

Alles, was das test Attribut zu bestimmen sucht, ob etwas wahr ist, ist die Zeichenkette „true“ (Fall in empfindlich). Beispielsweise wird der folgende Code „Hallo Welt!“ Drucken

<c:if test="true">Hello world!</c:if>

Der Code innerhalb des <%= %> gibt einen boolean, so wird es entweder die Zeichenfolge „wahr“ oder „falsch“ drucken, das ist genau das, was der <c:if> Tag sucht.

Andere Tipps

Sie können auch so etwas wie

verwenden
<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>

Der Ausdruck zwischen dem <% =%> wird vor dem c ausgewertet: if-Tag ausgewertet wird. So, dass unter der Annahme | request.isUserInRole | Rückkehr | true |, würde Ihr Beispiel dieses zuerst ausgewertet werden:

<c:if test="true">
    <li>user</li>
</c:if>

und dann die c:. If-Tag ausgeführt werden würde

Attribute in JSP-Tag-Bibliotheken im Allgemeinen kann entweder statisch oder aufgelöst auf Anfrage Zeit. Wenn sie auf Wunsch Zeit gelöst werden wird die JSP ihren Wert zur Laufzeit aufzulösen und die Ausgabe auf den Tag passieren. Das heißt, Sie so ziemlich jeden JSP-Code in das Attribut setzen kann und der Tag wird sich entsprechend zu verhalten, was die Ausgabe erzeugt.

Wenn Sie sich die jstl taglib docs schauen, können Sie sehen, welche reuest Zeitattribute sind und welche nicht. http://java.sun.com/products/ jsp / jstl / 1.1 / docs / tlddocs / index.html

<% =%> von selbst wird an den Ausgang gesendet werden, im Rahmen des JSTL wird es in einen String ausgewertet werden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top