我需要这个HTML输出:
<tr>
<th>...</th>
<td>...</td>
<td>...</td>
</tr>
<tr>
<th>...</th>
<td>...</td>
<td>...</td>
</tr>
etc...
我没有做太多JSF,这是我正在使用的JSF:
<h:dataTable>
<h:column>...</h:column>
<h:column>...</h:column>
<h:column>...</h:column>
</h:dataTable>
那,唉,不给我任何TH只有3个TD。所以我接着尝试了这个:
<h:dataTable>
<h:column><f:facet name="header">...</f:facet></h:column>
<h:column>...</h:column>
<h:column>...</h:column>
</h:dataTable>
但是这只给了我第一行的TH,而不是每一行。
有没有办法处理JSF而不必编写某些自定义组件?
答案 0 :(得分:2)
每行中有一个实际的TH有多重要?如果这只是为了样式目的,你可以用h:dataTable的“columnClasses”来完成你想要的东西,给第一列一个不同的CSS类。
<h:dataTable columnClasses="firstColumn">
... h:columns ...
</h:dataTable>
如果每行绝对必须有一个TH元素,我想不出用h:dataTable做这个的方法,但你可以使用&lt; ui:repeat&gt;代替。这将像老派一样工作&lt; c:forEach&gt;在哪里渲染&lt; table&gt; /&lt; tr&gt;你自己。例如:
<ui:repeat value="#{bean.list}" var="row">
<tr>
<th><h:outputText value="#{row.foo}"/></th>
<td><h:outputText value="#{row.bar}"/></td>
</tr>
</ui:repeat>
希望这有帮助!