0

我有一个页面,我正在从 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 是一个对象,其中包含一个包含列表的单元格。我需要通过数字索引获取每个元素。

有任何想法吗?

4

2 回答 2

1

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).

于 2010-02-15T22:10:56.000 回答
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是 a时才有效Map,因此cells.get($col)原始表达式中的表达式正在调用get()Map。如果它是任意方法调用,那么它将不起作用,因为 JSP EL 只能处理 bean 属性或集合。

正如@EliteGentleman 指出的那样,您可以使用varStatusonforEach循环来消除对单独循环计数器的需求,您应该这样做。我的片段是一个更直译的翻译。

于 2010-02-15T22:06:17.403 回答