2013-01-31 51 views
11

我一直在使用ui:repeat來生成表格。使用ui:重複使用varStatus可以輕鬆獲得行數。調用backing bean處理列表導航時,我依賴varStatus中的行ID,例如在列表中向上或向下移動項目。JSF 2 dataTable row index without dataModel

現在我想創建一個複合組件,它可以構建一個可定製的表格,並具有標記行,向上/向下移動它們所需的所有功能。要做到這一點,ui:repeat將不起作用,因爲我可以'看到處理不同列數的方法;我需要在一個地方指定標題,而在另一個地方指定標題(我還沒有達到可以創建自定義組件的知識點)。因此,我繼續使用datatable,因爲使用這種方式意味着將標題指定爲與正文內容相同位置的構面。

這很好,直到我注意到由於某種原因,沒有varStatus了。我已經投入了大量的工作來處理列表演示,而不需要任何datamodel,我不想開始使用它。有什麼方法可以獲取當前行號,因爲它顯示在表中,而不使用datamodel

另外我使用viewScope,如果我正確理解這意味着我不能綁定dataTable到bean。

回答

28

只需將表綁定到視圖本身而不是bean。

<h:dataTable binding="#{table}" ...> 

然後,您可以根據需要使用#{table.rowIndex}。例如。

<h:column>#{table.rowIndex + 1}</h:column> 
+1

我讀了另一篇文章,你有這個解決方案,但我認爲綁定=「#{table}」是綁定到bean的簡寫。我不知道這是可能的。謝謝BalusC! – nivis

+0

不客氣。 – BalusC

+0

我以爲和@nivis一模一樣。也許是因爲'var'屬性的值不需要EL語句,但'binding'屬性的值是。我偏見EL語句中的任何命名值應該已經被我自己聲明,並且我想給變量命名(例如'table','rowItem')不應該發生在EL語句中。 –