0
我正在使用JSF 2.0的repeat
標記遍歷對象列表並顯示其某些屬性。我想使用repeat
的varStatus
屬性,以便我可以訪問循環索引,最後一個列表項的編號,並確定是否已到達列表的末尾(因此不會顯示間隔符)。我認爲這會工作:無法使用JSF 2.0重複標記的「結束」屬性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=" " rendered="#{false == repeatStatus.last}" />
</ui:repeat>
但是,它從來沒有顯示任何repeatStatus.end
。 index
和last
屬性運行良好。
而不是repeatStatus.end
,我嘗試使用objectList.size()
,但只爲列表中的第一項工作。
如何顯示列表中項目的數量作爲「y的項目x」文本的一部分?
這很有道理。但是,在這個項目中,我試圖避免使用JSTL。 根據你的建議,我嘗試了'size =「#{objectList.size()}」',但那沒有效果。 – 2012-08-01 20:28:02
然後創建一個自定義EL功能。然而,我不明白這比僅僅使用現有的JSTL功能更好。也許你已經過度概括了其中的一個,「在JSF中避免使用JSTL」。閱讀這個問題然後:http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense至於'.size()',只有當你的環境使用EL 2.2或JBoss EL時纔有效。 – BalusC 2012-08-01 20:44:57
儘管我還沒有爲我工作,但我已經標記了您的答案。我從來沒有見過你的解決方案不起作用。 :)我是一個Java新手,所以我不知道爲什麼它不工作,但我會弄清楚。我驗證了你對'size'屬性的評論。如果我在那裏放一個數字,'repeatStatus.end'確實顯示這個數字。我開始認爲JSTL沒有工作,但後來我嘗試了'fn:toUpperCase'並且工作正常。我認爲'objectList'的評估是錯誤的。我以前遇到過這個問題,但我認爲我需要提出另一個問題。 – 2012-08-03 19:23:31