如何知道EL的jsp标签属性是否可用?

时间:2008-10-02 13:20:40

标签: jsp jstl el

我在jsp中有以下代码:

<% pageContext.setAttribute("warnings",Globals.WARNING_MESSAGES); %>
<c:choose>
    <c:when test="${requestScope[pageScope.warnings] or sessionScope[pageScope.warnings]}">
        <html:errors header="warnings.header" footer="warnings.footer" prefix="warnings.prefix" suffix="warnings.suffix"/>
        <c:remove var="${pageScope.warnings}" scope="session"/>
    </c:when>
    <c:otherwise>
        <html:errors/>
    </c:otherwise>
</c:choose>

我想知道是否还有(不深入研究源代码)知道属性是否可用于EL编码。

在这段代码中,我想使用脚本变量define作为我在pageScope容器中设置的常量。当我从sessionScope中引用脚本变量中删除变量时,我想使用相同的机制,但似乎<c:remove var>属性拒绝解释我的脚本变量,这会破坏引用我的Constant声明的所有努力。我可以使用jsp scriptlet解决这个问题,但有没有“更好”的方法呢?

1 个答案:

答案 0 :(得分:1)

我不确定我理解你的问题,但我认为你正在寻找EL的“空”运算符来测试属性是否存在:

<c:if test="${empty pageScope.warnings}">
//do something
</c:if>

如果未定义pageScope.warnings(null),则返回true。