Facelets重复标记索引

时间:2011-04-06 06:21:08

标签: jsf jsf-2 facelets

有没有人知道如何在ui:repeat facelets标签中获取元素的索引?

<ui:repeat id="topTenGrd" var="dream" value="#{dreamModifyBean.topDreams}">
    <h:outputText class="dream-title uppercase" value="#{dream.number}. #{dream.title}" />
</ui:repeat>

2 个答案:

答案 0 :(得分:83)

指定“varStatus”属性的值:

<ui:repeat id="..." var="..." value="..." varStatus="myVarStatus">

然后,您可以通过EL访问循环索引:

#{myVarStatus.index}

此外,varStatus可以使用以下属性:

  • 从Integer类型开始
  • Integer类型的结尾
  • 类型为int的索引
  • 类型为Integer的步骤
  • 甚至类型为boolean
  • 类型为boolean的奇数
  • 类型为boolean的第一个
  • boolean的最后一个

有关详细信息,请参阅:

https://docs.oracle.com/javaee/7/javaserver-faces-2-2/vdldocs-facelets/ui/repeat.html

答案 1 :(得分:5)

布莱恩的答案很好,但我认为它可能对信息更具描述性。

我们创建UI:重复

<ui:repeat id="repeatOne" var="listofValues" varStatus="myVarStatus"> </ui:repeat>

使用UI重复,我们可以访问与列表&lt; listofValues&#39;相关联的变量中的值。

使用varStatus,我们可以创建另一个包含不同类型信息的变量。例如,使用列表中的#{myVarStatus.index}来创建表,我们可以将此信息用于列表中的索引。

1

2

3

当然,如果您指定的数组从0开始,那么除非您为每个数组添加1,否则您的列表也是如此。 #{myVarStatus.index + 1}

这些在需要使用2 UI:Repeat嵌套的2D数组中也非常有用。

财产___获取者_________说明

current     getCurrent()    The item (from the collection) for the current round of iteration
index       getIndex()      The zero-based index for the current round of iteration
count       getCount()      The one-based count for the current round of iteration
first       isFirst()       Flag indicating whether the current round is the first pass through the iteration
last        isLast()        Flag indicating whether the current round is the last pass through the iteration
begin       getBegin()      The value of the begin attribute
end         getEnd()        The value of the end attribute
step        getStep()       The value of the step attribute

包含链接的其他文档:

  1. 用户界面的属性:可以找到重复here