我有一个jsp,它接收(在验证之后)一个名为errorList的Map<String, Vector<ErrorMessage>>
。这包含页面上每个属性的错误列表。同样的jsp也用于数据的初始输入,在这种情况下,没有地图可用。
因此我创建了以下表达式:
<c:if test="${not empty errorList}">
<div class="warningbox">
<div class="warning">
<c:forEach var="error" items="${errorList['PropertyAttribute.KIND']}"/>
test: ${error.errorMessage}
</c:forEach>
</div>
</div>
</c:if>
我期待的事情:
1.第一次填写表单时,errorList不存在(甚至通过检查request.getAttributeNames()验证。因此if主体不应该执行。不是,实际上if主体被执行....的为什么?
2.当Vector为空时,永远不应执行forEach主体。实际上,页面上的结果是“test:”。这太荒谬了。
也许不是一个不重要的事实。我使用谷歌应用引擎。
答案 0 :(得分:1)
我看到三种可能性:
errorList
(确实应该命名为errorMap)存在于请求属性中,而不是空的(但你已经将其排除在外)errorList
的页面,会话或应用程序范围属性,它不为空。您可以使用${not empty requestScope.errorList}
。