JSF: h:dataTable vs h:panelGrid

2022-09-03 12:58:49

在 JSF 中,两者都创建 html -tags。h:dataTableh:panelGridtable

两者之间有什么区别?

何时使用其中一个?


答案 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>

答案 2

数据表一个模型驱动的数据输出组件。对于模型中的每一行,组件可以为 JSF 生命周期的每个阶段设置其子级的状态。这种行为是有益的还是有害的,这取决于你想要实现的目标。

相比之下,面板网格只是一个布局控件

这种差异(非常)大致类似于JTableJPanel之间的差异。


推荐