无法使用JSF2.0 repeat标记的varStatus的“end”属性

无法使用JSF2.0 repeat标记的varStatus的“end”属性,jsf,jsf-2,Jsf,Jsf 2,我使用JSF2.0的repeat标记循环遍历对象列表并显示它们的一些属性。我想使用repeat的varStatus属性,这样我就可以访问循环索引、最后一个列表项的编号,并判断是否已经到达列表的末尾,这样就不会显示间隔符。我认为这会奏效: <ui:repeat var="anObject" varStatus="repeatStatus" value="#{objectList}"> <h:panelGroup> <h:outputText v

我使用JSF2.0的repeat标记循环遍历对象列表并显示它们的一些属性。我想使用repeat的varStatus属性,这样我就可以访问循环索引、最后一个列表项的编号,并判断是否已经到达列表的末尾,这样就不会显示间隔符。我认为这会奏效:

<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的任何内容。索引和last属性运行良好

我尝试使用objectList.size代替repeatStatus.end,但这只适用于列表中的第一项

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

只有在设置“大小”属性时才使用结束

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

{fn:lengthobjectList}的{repeatStatus.index+1}项
顺便说一下,{false==repeatStatus.last}中的布尔比较很难看。它已返回布尔值;如果要否定它,请使用{not repeatStatus.last}。

这很有意义。然而,在这个项目中,我试图避免使用JSTL。根据您的建议,我尝试了size={objectList.size},但没有效果。然后创建一个自定义EL函数。然而,我不认为这比仅仅使用现有的JSTL函数更好。为了避免JSF中的JSTL,您可能过度概括了一个和另一个。阅读下面的问答:至于.size,只有在您的环境使用EL 2.2或JBoss EL时才有效。我已经将您的答案标记为良好,尽管我还没有让它对我起作用。我从来没有见过你的解决方案不起作用我是一个Java新手,所以我不确定它为什么不工作,但我会找到答案的。我验证了你所说的大小属性。如果我在其中输入了一个数字,repeatStatus.end会显示该数字。我开始认为JSTL不起作用,但后来我尝试了fn:toUpperCase,结果成功了。我认为objectList的评估是错误的。我以前也遇到过这个问题,但我想我需要再问一个关于这个问题的问题。另外,非常感谢您在JSF2问题中为我指出JSTL。我不能说我完全理解你的答案,但我明白了要点。正如我所说,我是Java和JSF新手,所以我在这个项目上听从了我同事的建议。我认为他在这个话题上也有点误传。我发布了关于参数被分配给方法引用的信息,而不是它们的结果。我觉得这和我在工作时遇到的问题很相似。就像JSF在调用fn:lengthobjectList时没有看到objectList的值一样。objectList应该由getter方法返回。