我的问题是我无法弄清楚如何在<f:facet>
中使用<h:dataTable>
var
属性制作EL代码。
JSF代码:
<h:dataTable value="#{backingBean.someList}" var="absolutelyUniqueVar">
<h:column>
<f:facet name="header">#{backingBean.someEntity}</f:facet>
<h:outputText value="#{backingBean.someEntity.someField}"/>
</h:column>
<h:column>
<f:facet name="header">#{absolutelyUniqueVar.anotherField}</f:facet>
<h:outputText value="#{absolutelyUniqueVar.anotherField}"/>
</h:column>
</h:dataTable>
它产生了什么:
<table>
<thead>
<tr>
<th>someEntityClass@f613189e</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>someField</td>
<td>anotherField</td>
</tr>
</tbody>
</table>
正如你所看到的,EL在第一个<f:facet>
工作正常,但第二个没有产生任何东西。
我不熟悉JSF,所以我会感激任何帮助。谢谢。
这是可以预料的。在公共头中使用迭代变量的值是没有意义的。你会在那里展示什么?如果到达第二排怎么办?覆盖第一个元素的值?然后最后你只能看到最后一个元素的值。但是,由于这也没有意义,你想要的东西是不可能的。无论有没有JSF,它都没有任何意义。
来自@BalusC的评论引用也见于此也适用于:
..但你不清楚你想要在列标题中显示哪一行以及为什么要完全清楚。通常,表不能像那样工作。列标题应代表列的描述,例如“名称”,“电子邮件”,“标题”,“价格”等。在您的特定情况下,“密钥”和“值”将是这两列的候选标题。请注意,这不是JSF问题,而只是表格数据的一般模型/设计问题。在任何其他演示框架中尝试相同时,您会遇到完全相同的问题。
如果你想使用某个元素的值(例如measuer的公共单位),那么显式引用标题中的一个(第一个?)元素:
#{backingBean.someList[0].uom}
也可以看看