Ответ 1
Как видно из названия, 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>