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

时间:2020-03-06 15:01:32  来源:igfitidea点击:

我的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编码。

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

解决方案

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

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

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