JSF: h:dataTable与h:panelGrid的比较

16
在JSF中,h:dataTableh:panelGrid都创建HTML的table标签。
两者之间有什么区别?
何时使用其中一个或另一个?

6
简而言之:对于动态表格使用 h:dataTable,对于静态表格使用 h:panelGrid - BalusC
3个回答

17

正如它的名称所示,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>

5

当您知道要显示的行数和列数时,应使用panelGrid。您必须自己定义所有子组件(手动操作,panelGrid不会自动添加任何行/列),panelGrid将排列它们。 另一方面,当您具有一个大小未确定的数据结构(如集合)时,应使用DataGrid,然后只需指定要打印的列,DataGrid将迭代该集合,为每个条目创建一行。


5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接