JSF: h:dataTable по сравнению с h:panelGrid

В JSF, h:dataTable и h:panelGrid оба создают HTML table- теги.

Каково различие между обоими?

Когда использовать один или другой?

15
задан Jan 29 July 2010 в 23:19
поделиться

3 ответа

Как видно из названия, h: dataTable используется в основном для отображения таблицы, содержащей данные из некоторых моделей вашего приложения. Вот пример использования.

<h:dataTable value="#{dataTableBean.items}" var="item">
    <h:column>
        <f:facet name="header" >
            <h:outputText value="Item Category"/>
        </f:facet>    
        <h:outputText value="#{item.category}"/>
    </h:column>
</h:dataTable>

h: panelGrid используется в основном для разметки и размещения элементов. Вот пример использования.

<h:panelGrid id="panel" columns="2" border="1">
    <h:outputText value="First Name:" />
    <h:inputText id="first" value="#{backingBean.user.firstName}" />
    <h:outputText value="Last Name:" />
    <h:inputText id="last" value="#{backingBean.user.lastName}" />
</h:panelGrid>
17
ответ дан 1 December 2019 в 02:45
поделиться

dataTable - это управляемый моделью компонент вывода данных . Для каждой строки в вашей модели компонент может устанавливать состояние своих дочерних элементов для каждой фазы жизненного цикла JSF . Такое поведение полезно или вредно в зависимости от того, чего вы пытаетесь достичь.

Напротив, panelGrid является просто элементом управления макетом .

Разница (очень) примерно аналогична разнице между JTable и JPanel .

5
ответ дан 1 December 2019 в 02:45
поделиться

Вы должны использовать panelGrid, когда знаете количество строк и столбцов, которые хотите отобразить, вы должны сами определить все дочерние компоненты (вручную, panelGrid не будет добавлять любые строки / столбцы сами по себе), а panelGrid их упорядочит. DataGrid, с другой стороны, используется, когда у вас есть структура данных (например, коллекция) с неопределенным размером, тогда вам просто нужно указать столбцы, которые вы хотите распечатать, и dataGrid будет перебирать эту коллекцию, создавая строку для каждой записи.

4
ответ дан 1 December 2019 в 02:45
поделиться
Другие вопросы по тегам:

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