0

我正在使用repeatJSF 2.0 的标签来遍历对象列表并显示它们的一些属性。我想使用的varStatus属性,repeat以便我可以访问循环索引、最后一个列表项的编号,并判断是否已到达列表末尾(因此不会显示分隔符)。我认为这会起作用:

<ui:repeat var="anObject" varStatus="repeatStatus" value="#{objectList}">
    <h:panelGroup>
        <h:outputText value="Item #{repeatStatus.index + 1} of #{repeatStatus.end}" />
        <h:outputText value="#{anObject.text}" />
    </h:panelGroup>

    <h:outputText value="&nbsp;" rendered="#{false == repeatStatus.last}" />
</ui:repeat>

但是,它从不显示任何内容repeatStatus.end。和属性运行良好indexlast

而不是repeatStatus.end,我尝试使用objectList.size(),但这仅适用于列表中的第一项。

如何将列表中的项目数显示为“Item x of y”文本的一部分?

4

1 回答 1

2

end仅在设置属性时使用size

<ui:repeat ... size="#{fn:length(objectList)}">

或者,您也可以直接使用它。

Item #{repeatStatus.index + 1} of #{fn:length(objectList)}

顺便说一句,布尔比较#{false == repeatStatus.last}是丑陋的。它已经返回一个布尔值;如果您想否定它,请使用#{not repeatStatus.last}.

于 2012-08-01T19:48:43.683 回答