如何将速度表达式转换为JSP?

时间:2010-02-15 22:02:23

标签: java jsp velocity

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

有什么想法吗?

2 个答案:

答案 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.cellsMap时才有效,因此原始cells.get($col)表达式会在get()上调用Map。如果它是一个任意的方法调用,那么它将无法工作,因为JSP EL只能处理bean属性或集合。

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