acessando constantes no JSP (sem scriptlet) [duplicado]
Esta questão já tem uma resposta aqui:
Como fazer referência a constantes no EL? 12 respostasEu tenho uma classe que define os nomes de vários atributos da sessão, por exemplo
class Constants {
public static final String ATTR_CURRENT_USER = "current.user";
}
Eu gostaria de usar essas constantes dentro de um JSP para testar a presença desses atributos, algo como:
<%@ 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>
Mas parece que não consigo acertar a sintaxe. Além disso, para evitar repetir os testes demorados em vários locais, gostaria de atribuir o resultado a uma variável local (com escopo de página) e consultá-lo. Eu acredito que posso fazer isso com<c:set>
, mas novamente estou lutando para encontrar a sintaxe correta.
ATUALIZAR: Além da sugestão abaixo, tentei:
<c:set var="nullUser" scope="session"
value="${sessionScope[Constants.ATTR_CURRENT_USER] eq null}" />
que não funcionou. Então, tentei substituir o valor literal da constante. Eu também adicionei a constante ao conteúdo da página, para que eu pudesse verificar o valor da constante quando a página está sendo renderizada
<c:set var="nullUser" scope="session"
value="${sessionScope['current.user'] eq null}" />
<%= "Constant value: " + WebHelper.ATTR_CURRENT_PARTNER %>
Isso funcionou bem e imprimiu o valor esperado "current.user" na página. Eu estou em uma perda para explicar por que usar o literal String funciona, mas uma referência à constante não, quando os dois parecem ter o mesmo valor. Socorro.....