我對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>
從谷歌搜索,我讀過的各種含糊的評論像'那不是這樣做',但是我一直無法找到正確方法的特別引人注目的例子。有人提到在backing bean中構建DataTable,但我能找到的唯一例子是http://forums.sun.com/thread.jspa?threadID=577589。它的工作,但感覺有點笨拙,特別是因爲使用的一些方法已被棄用。
目前,看起來我不太可能會使用除核心JSF以外的任何庫,但如果絕對必要的話可能會更改。任何人都可以通過正確的方式解決問題嗎?它看起來應該很簡單,所以我確信我只是想念一些明顯的東西。