由于其他原因,我必须在jsp页面上执行forEach循环,而不是迭代集合。我需要显示集合的值,但由于内部括号,我返回语法错误。我必须首先逃避它吗?如何让它解析i的值然后从colllection中获取值?
<c:if test="${maxColumns >= 0}">
<c:forEach var="i" begin="0" end="${maxColumns}" step="1" varStatus ="status">
<td height="20"> ${columnNames[${i}].columnName</td>
</c:forEach>
</c:if>
感谢您的帮助。
答案 0 :(得分:1)
您不能像这样嵌套JSP EL表达式,但您不必 - 正确的表达式是:
${columnNames[i].columnName}
由于i
标记, forEach
已经是EL范围的一部分,并且应该被评估为任何其他范围变量,例如columnNames
。这里只是一个集合索引。
虽然我很同意在视图层中需要做这种逻辑,但IMO几乎总是用Java编写收集范围更好 - 它也更容易测试。