访问 JSP 中的常量(不带脚本)使用脚本使用 JSTL
我有一个类,定义了各种会话属性的名称,例如
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文字有效,但是当两者似乎具有相同的值时,对常量的引用却不起作用。帮助。。。。。