У меня есть класс, который определяет имена различных атрибутов сеанса, например
class Constants {
public static final String ATTR_CURRENT_USER = "current.user";
}
Я хотел бы использовать эти константы в JSP для проверки наличия этих атрибутов, например:
<%@ 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>
Но я не могу заставить sytax правильно. Кроме того, чтобы избежать повторения довольно длинных тестов выше в нескольких местах, я хотел бы присвоить результат локальной (с областью страницы) переменной и ссылаться на это вместо этого. Я считаю, что могу сделать это с помощью <c:set>
, но снова я пытаюсь найти правильный синтаксис.
ОБНОВЛЕНИЕ: В дополнение к предложению ниже я попытался:
<c:set var="nullUser" scope="session"
value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" />
который не работал. Поэтому вместо этого я попытался подставить буквальное значение константы. Я также добавил константу к содержимому страницы, поэтому я мог проверить постоянное значение при рендеринге страницы
<c:set var="nullUser" scope="session"
value="${sessionScope['current.user'] eq null}" />
<%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %>
Это сработало, и на странице было напечатано ожидаемое значение "current.user". Я затрудняюсь объяснить, почему работает литерал String, но ссылка на константу не возникает, когда два имеют одинаковое значение. Помощь.....