Как я могу преобразовать выражение скорости в JSP? - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть страница, которую я конвертирую из Velocity в JSP. У меня есть некоторые сложные выражения, которые я не могу понять, как конвертировать в язык JSTL.

#set ($col = 0)

#foreach ($hour in $form.bean.grid.hours)
  $hour.cells.get($col).hourOfDay
  #set ($col = $col + 1)
#end

Час - это объект, который содержит ячейку со списком. Мне нужно получить каждый элемент через числовой индекс.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

По сути, вы показываете часы дня. Используя JSTL,

<c:forEach items="${form.bean.grid.hours}" var="hour" varStatus="index">
   ${hour.cells[index.count - 1].hourOfDay}
</c:forEach>

Значение count в index.count начинает отсчитываться от 1 до N (поэтому уменьшите его на 1).

0 голосов
/ 16 февраля 2010

Что-то вроде:

<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, чтобы устранить необходимость в отдельном счетчике цикла, что вы должны сделать. Мой фрагмент был более буквальным переводом.

...