我有一个页面,我正在从 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 是一个对象,其中包含一个包含列表的单元格。我需要通过数字索引获取每个元素。
有任何想法吗?
Basically, you're displaying hours of day. Using JSTL,
<c:forEach items="${form.bean.grid.hours}" var="hour" varStatus="index">
${hour.cells[index.count - 1].hourOfDay}
</c:forEach>
The count
in index.count starts counting from 1 to N (so negate it by 1).
就像是:
<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
是 a时才有效Map
,因此cells.get($col)
原始表达式中的表达式正在调用get()
它Map
。如果它是任意方法调用,那么它将不起作用,因为 JSP EL 只能处理 bean 属性或集合。
正如@EliteGentleman 指出的那样,您可以使用varStatus
onforEach
循环来消除对单独循环计数器的需求,您应该这样做。我的片段是一个更直译的翻译。