JSF: h:dataTable vs h:panelGrid

Jan*_*Jan 15 java jsf

In JSF, h:dataTable and h:panelGrid both create html table-tags.

What is the difference between both?

When to use one or the other?

Jos*_*iaz 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>
Run Code Online (Sandbox Code Playgroud)

将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>
Run Code Online (Sandbox Code Playgroud)


Mat*_*zyk 5

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


McD*_*ell 5

所述的dataTable是一个模型驱动的 数据输出部件.对于模型中的每一行,组件可以为JSF生命周期的每个阶段设置其子项的状态.根据您要实现的目标,这种行为是有益的或有害的.

相比之下,panelGrid只是一个布局控件.

差异(非常)大致类似于JTable和JPanel之间的差异.