如何以编程方式创建类似于组件的dataTable?

时间:2011-10-24 07:44:51

标签: jsf-2 datatable

我必须显示一个包含大量列和行的二维表,并且这两个维度不是固定的。使用JSF2 dataTable有一个限制,即colums的数量不能是动态的:每个coloumn必须有正确的jsf标记。 有没有办法以编程方式插入列中的dataTable中的行? panelGrid也不适合,因为你必须手动指定和写入所有标签。 我不想使用javascript来创建这样的组件,我想尽可能地利用JSF2。

1 个答案:

答案 0 :(得分:0)

standard JSF component set没有这样的组件,它在逻辑上命名为<h:columns>。然而,存在具有这种组件的第三方组件库。例如,Tomahawk <t:columns>PrimeFaces <p:columns>。 Tomahawk组件不会产生任何额外的look'n'feel,所以如果你想自己完全控制CSS,这是完美的。 PrimeFaces在CSS themeroller framework的帮助下生成一个可定制的look'n'feel,所以如果你想利用themeroller来管理look'n'feel,这是完美的。

以下是一个如何使用Tomahawk的<t:columns>,从tag documentation复制并略微更改的示例:

<t:dataTable value="#{bean.rows}" var="row">
    <t:columns value="#{bean.columns}" var="column">
        <f:facet name="header">
            <h:outputText value="#{column.name}"/>
        </f:facet>
        <h:outputText value="#{row[column.name]}"/>
    </t:columns>
</t:dataTable>