Поиск индекса в модифицированном итераторе шаблона Struts2

это должно быть просто, но я не могу найти нужную переменную.

Я настраиваю шаблон Freemarker в struts2 (простой -> radioMap)

Структура шаблона в основном:

<@s.iterator value="parameters.list">
   //Display each item in the list
</@s.iterator>

То, что я пытаюсь сделать, это отобразить количество каждого элемента в итерации. Мне нужно получить индекс каждого повторного элемента, чтобы я мог распечатать

0 - Item A
1 - Item B
....

Как я могу получить такой индекс? Спасибо!


person Lenny Markus    schedule 26.05.2012    source источник


Ответы (2)


Поскольку @s.iterator не является стандартной директивой FreeMarker, я не знаю, помещает ли она текущий индекс в какую-то переменную или нет (стандартная директива #list делает, но, видимо, они почему-то используют свой собственный итератор). Однако вы можете просто посчитать себя, например:

<#local idx = 0>
<@.iterator ...>
   <#local idx = idx + 1>
   ...
</@.iterator>

Обратите внимание, что использование #local предполагает, что эта вещь "radioMap" является макросом. Если это не так, вам пришлось использовать вместо этого <#assign ...>, и тогда я надеюсь, что этот код вызывается в своем собственном пространстве имен FreeMarker (т. е. это #import-ed, а не #include-d) или в своем собственном FreeMarker Environment, иначе вы можете имеют конфликты имен.

person ddekany    schedule 27.05.2012
comment
Мне пришлось использовать <#assign ...>. Спасибо за предупреждение о возможных конфликтах пространств имен. Я позаботился о том, чтобы дать переменной адекватное имя. Не знаю, может ли это быть наиболее подходящим решением, но оно достаточно хорошо решило мою проблему. - person Lenny Markus; 27.05.2012

Тег итератора S2 использует атрибут status для имени переменной состояния цикла.

Тег свойства можно использовать для получения переменной состояния цикла.

http://struts.apache.org/2.x/docs/iterator.html

Чтобы использовать собственный цикл FM, вы можете использовать метод stack.findValue().

http://struts.apache.org/2.x/docs/freemarker.html

person Dave Newton    schedule 27.05.2012