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