我有一个页面,我正在从Velocity转换为JSP。我有一些复杂的表达式,我无法弄清楚如何转换为JSTL el语言。
#set ($col = 0)
#foreach ($hour in $form.bean.grid.hours)
$hour.cells.get($col).hourOfDay
#set ($col = $col + 1)
#end
Hour是一个包含包含列表的单元格的对象。我需要通过数字索引获取每个元素。
有什么想法吗?
答案 0 :(得分:1)
基本上,您正在显示一天中的小时数。使用JSTL,
<c:forEach items="${form.bean.grid.hours}" var="hour" varStatus="index">
${hour.cells[index.count - 1].hourOfDay}
</c:forEach>
index.count中的count
从1开始计数到N(因此将其否定为1)。
答案 1 :(得分:0)
类似的东西:
<c:set var="col" value="0"/>
<c:forEach items="${form.bean.grid.hours}" var="hour">
${hour.cells[col].hourOfDay}
<c:set var="col" value="${col + 1}"/>
</c:forEach>
这仅在hour.cells
为Map
时才有效,因此原始cells.get($col)
表达式会在get()
上调用Map
。如果它是一个任意的方法调用,那么它将无法工作,因为JSP EL只能处理bean属性或集合。
正如@EliteGentleman指出的那样,您可以使用varStatus
循环上的forEach
来消除对单独循环计数器的需要,您应该这样做。我的片段是一个更直接的翻译。