счетчик строки для строки таблицы HTML

У меня есть HTML-таблица в веб-приложении JSF. Я генерирую строки динамично с помощью <ui:repeat>. Я хочу счетчик для каждой строки. Как я могу получить это? Какая-либо справка?

Ssimilar к rowKeyVar в богатой таблице данных поверхностей.

8
задан BalusC 30 December 2009 в 11:34
поделиться

3 ответа

Так как вы используете ричфейсы, вы можете сделать это с его итерационным тегом (), что немного более уместно, чем использование , и это похоже на расширение к

<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>
11
ответ дан 5 December 2019 в 04:55
поделиться

Нельзя сделать это красиво с помощью 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>
7
ответ дан 5 December 2019 в 04:55
поделиться

Нет счетчика для каждого ряда в ui:repeat. Как сказал BalusC, вы можете перейти на h:datatable. Другая идея заключается в том, что косвенно вы можете добавить дополнительный метод индекса в бобах для каждого объекта в списке на стороне сервера и получить его в jsf и манипулировать им.

.
0
ответ дан 5 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: