доступ к константам в JSP (без скриптлета) [дубликат]
This question already has an answer here:
How to reference constants in EL? 12 answersУ меня есть класс, который определяет имена различных атрибутов сеанса, например,
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>
Но я не могу понять, правильно ли синтаксис. Кроме того, чтобы избежать повторения довольно длительных тестов, описанных выше, в нескольких местах, я хотел бы присвоить результат локальной переменной (в области страницы) и вместо этого обратиться к ней. Я верю, что могу сделать это с<c:set>
, но я снова пытаюсь найти правильный синтаксис.
UPDATE: В дополнение к предложению ниже, я попытался:
<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" на странице. Я затрудняюсь объяснить, почему используются строковые литералы, но ссылка на константу отсутствует, когда эти два значения имеют одно и то же значение. Помогите.....