Ответ 1
Просто привяжите таблицу к самому представлению, а не к bean.
<h:dataTable binding="#{table}" ...>
Затем вы можете использовать #{table.rowIndex}
там, где это необходимо. Например.
<h:column>#{table.rowIndex + 1}</h:column>
Я использовал ui: repeat для генерации таблиц. С помощью ui: повторите легко, чтобы строки были пронумерованы с помощью varStatus
. В зависимости от идентификатора строки из varStatus при вызове backing bean используется для навигации по списку, например, перемещение элемента вверх или вниз в списке.
Теперь я хотел бы создать составной компонент, который создает настраиваемую таблицу со всеми функциями, необходимыми для маркировки строк, перемещения их вверх/вниз и т.д. Для этого повтор ui: repeat не будет работать, поскольку я не могу см. способ обработки различного количества столбцов; Мне нужно указать заголовки в одном месте, а тело - в другом (и я не достиг точки знания, где я могу создать пользовательский компонент). Поэтому вместо этого я стал использовать datatable, поскольку это означает указание заголовков как грани в том же месте, что и содержимое тела.
Это работало хорошо, пока я не заметил, что по какой-то причине больше не было varStatus
. Я много работал над обработкой презентации списка без необходимости в datamodel
, и я не хочу ее использовать. Есть ли способ получить текущий номер строки, как он отображается в таблице, без использования datamodel
?
Также я использую viewScope, и если я правильно понял это означает, что я не могу привязать dataTable к bean.
Просто привяжите таблицу к самому представлению, а не к bean.
<h:dataTable binding="#{table}" ...>
Затем вы можете использовать #{table.rowIndex}
там, где это необходимо. Например.
<h:column>#{table.rowIndex + 1}</h:column>