Zugriff auf Konstanten in JSP (ohne Scriptlet) [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie referenziere ich Konstanten in EL? 12 Antworten

Ich habe eine Klasse, die die Namen verschiedener Sitzungsattribute definiert, z.

class Constants {
    public static final String ATTR_CURRENT_USER = "current.user";
}

Ich möchte diese Konstanten in einer JSP verwenden, um das Vorhandensein dieser Attribute zu testen.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.example.Constants" %>

<c:if test="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}">
    <%-- Do somthing --%>
</c:if>

Aber ich kann nicht scheinen, die korrekte sytax zu erhalten. Um zu vermeiden, dass die oben beschriebenen, recht langen Tests an mehreren Stellen wiederholt werden, möchte ich das Ergebnis einer lokalen (seitenbezogenen) Variablen zuweisen und mich stattdessen darauf beziehen. Ich glaube, ich kann das mit machen<c:set>Aber ich kämpfe wieder darum, die richtige Syntax zu finden.

AKTUALISIEREN: Auf den folgenden Vorschlag hin habe ich versucht:

<c:set var="nullUser" scope="session"
value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" />

was nicht funktioniert hat. Also habe ich stattdessen versucht, den Literalwert der Konstanten zu ersetzen. Ich habe auch die Konstante zum Inhalt der Seite hinzugefügt, damit ich den Wert der Konstante beim Rendern der Seite überprüfen kann

<c:set var="nullUser" scope="session"
value="${sessionScope['current.user'] eq null}" />
<%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %>

Dies hat gut funktioniert und den erwarteten Wert "current.user" auf der Seite ausgegeben. Ich kann nicht erklären, warum die Verwendung des String-Literal funktioniert, ein Verweis auf die Konstante jedoch nicht, wenn die beiden scheinbar denselben Wert haben. Hilfe.....

Antworten auf die Frage(7)

Ihre Antwort auf die Frage