具有动态列的数据表
我对JSF完全陌生,只是尝试概念验证来决定它是否对项目有用。我的 POC 仅由一个页面组成,其中包含一个包含一些数据的表格。
列数(以及行数)是动态的,在呈现页面之前从数据库加载。
有了以下内容,我得到了两个具有适当行数的静态列,正如我所期望的那样:
<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{row.values[0].value}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Col 2"/>
</f:facet>
<h:outputText value="#{row.values[1].value}"/>
</h:column>
</h:dataTable>
我想做的是添加一组标签,以迭代列数,但这不起作用 - 我尝试了各种组合,但我期望这样的东西起作用:<c:forEach...>
<h:column>...</h:column>
<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<c:forEach items="#{row.values}" var="val">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{val.value}"/>
</h:column>
</c:forEach>
</h:dataTable>
从谷歌搜索中,我读到了各种模糊的评论,比如“这不是这样做的方法”,但我无法找到任何特别引人注目的正确方法的例子。有人提到在后备豆中构建DataTable,但我能找到的唯一例子是 http://forums.sun.com/thread.jspa?threadID=577589。它有效,但感觉有点笨拙,特别是因为使用的一些方法已被弃用。
目前,我不太可能使用核心 JSF 以外的任何库,但如果绝对必要,这种情况可能会改变。任何人都可以阐明正确的方法吗?看起来它应该很简单,所以我确信我只是错过了一些明显的东西。