У меня есть HTML-таблица в веб-приложении JSF. Я генерирую строки динамично с помощью <ui:repeat>
. Я хочу счетчик для каждой строки. Как я могу получить это? Какая-либо справка?
Ssimilar к rowKeyVar в богатой таблице данных поверхностей.
Так как вы используете ричфейсы, вы можете сделать это с его итерационным тегом (
), что немного более уместно, чем использование
, и это похоже на расширение к
<table>
<a4j:repeat value="#{bean.list}" var="item" rowKeyVar="idx">
<tr>
<td><h:outputText value="#{idx + 1}" /></td>
<td><h:outputText value="#{item.someProperty}" /></td>
<td><h:outputText value="#{item.otherProperty}" /></td>
</tr>
</a4j:repeat>
</table>
Нельзя сделать это красиво с помощью ui:repeat
, но можно сделать это с помощью h:dataTable
. Привязать компонент к свойству UIData
в бобе подложки. Он имеет метод getRowIndex()
, который делает именно то, что вам нужно:
<h:dataTable binding="#{bean.table}" value="#{bean.list}" var="item">
<h:column><h:outputText value="#{bean.table.rowIndex + 1}" /></h:column>
<h:column><h:outputText value="#{item.someProperty}" /></h:column>
<h:column><h:outputText value="#{item.otherProperty}" /></h:column>
</h:dataTable>
Здесь я добавляю 1
к UIData#getRowIndex()
, так как он основан на нулях. Вы можете найти статью Использование таблиц данных полезной для того, чтобы узнать больше о таблицах данных.
Если вы действительно хотите немного больше контроля над компоновкой таблиц (особенно используя colspans/rowspans, которых не хватает в реальном теге JSF h:dataTable
), то альтернативой будет использование тега JSTL c:forEach
c:forEach, который имеет атрибут varStatus
, который дает вам хэндл к состоянию цикла.
<table>
<c:forEach items="#{bean.list}" var="item" varStatus="loop">
<tr>
<td><h:outputText value="#{loop.index + 1}" /></td>
<td><h:outputText value="#{item.someProperty}" /></td>
<td><h:outputText value="#{item.otherProperty}" /></td>
</tr>
</c:forEach>
</table>
Нет счетчика для каждого ряда в ui:repeat. Как сказал BalusC, вы можете перейти на h:datatable. Другая идея заключается в том, что косвенно вы можете добавить дополнительный метод индекса в бобах для каждого объекта в списке на стороне сервера и получить его в jsf и манипулировать им.
.