在修改后的Struts2模板迭代器中查找索引

时间:2012-05-26 21:11:41

标签: struts2 iterator freemarker

这应该很简单,但我找不到合适的变量。

我在struts2中定制了一个Freemarker模板(简单 - > radioMap)

模板的结构基本上是:

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

我正在尝试做的是显示迭代中每个项目的编号。 我需要获取每个迭代项的索引,以便我可以打印

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

我怎样才能获得这样的索引? 谢谢!

2 个答案:

答案 0 :(得分:0)

由于@s.iterator不是标准的FreeMarker指令,我不知道它是否将当前索引放入某个变量(标准指令#list),但显然他们使用自己的迭代器由于某些原因)。但是,你可以算一下自己,比如:

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

请注意,#local的用法假设此“radioMap”事物是一个宏。如果不是,则必须使用<#assign ...>,然后我希望在自己的FreeMarker名称空间中调用此代码(即,#import - ed,而不是#include - d或者在它自己的FreeMarker Environment中,否则你可能会发生名称冲突。

答案 1 :(得分:0)

S2迭代器标记使用status属性来命名循环状态变量。

属性标记可用于检索循环状态变量。

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

要使用本机FM循环,您可以使用stack.findValue()方法。

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