h:dataTable "var" 属性在 facet EL 中不起作用
h:dataTable "var" attribute doesn't work inside facet EL
我的问题是我不知道如何使 <f:facet>
中的 EL 代码与 <h:dataTable>
var
属性一起工作。
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>
如您所见,第一个 <f:facet>
中的 EL 工作正常,但第二个没有任何结果。
我不熟悉 JSF,所以我将不胜感激任何帮助。
谢谢。
这是意料之中的事情。在普通 header 中使用迭代变量的值是没有意义的。你会在那里展示什么?到了第二行怎么办?覆盖第一个元素的值?然后最后你只会看到最后一个元素的值。但由于这也没有意义,所以你想要的东西是不可能的。它在任何方面都没有意义......有或没有 JSF。
引自@BalusC 的评论,另请参阅此处也适用:
.. but you're not terribly clear on which row exactly you want to show in the column header and why exactly. Usually, a table doesn't work like that. The column header should represent a description of the column, e.g. "Name", "Email", "Title", "Price", etc. In your specific case, "Key" and "Value" would be candidate headers for those two columns. Note that this is not a JSF problem, but just a general model/design problem as to tabular data. You'd have exactly the same problem when trying the same in any other presentation framework.
如果你想使用某个元素的值(例如一个通用的度量单位),那么在 header:
中显式引用一个(第一个?)元素
#{backingBean.someList[0].uom}
另请参阅
我的问题是我不知道如何使 <f:facet>
中的 EL 代码与 <h:dataTable>
var
属性一起工作。
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>
如您所见,第一个 <f:facet>
中的 EL 工作正常,但第二个没有任何结果。
我不熟悉 JSF,所以我将不胜感激任何帮助。 谢谢。
这是意料之中的事情。在普通 header 中使用迭代变量的值是没有意义的。你会在那里展示什么?到了第二行怎么办?覆盖第一个元素的值?然后最后你只会看到最后一个元素的值。但由于这也没有意义,所以你想要的东西是不可能的。它在任何方面都没有意义......有或没有 JSF。
引自@BalusC 的评论,另请参阅此处也适用:
.. but you're not terribly clear on which row exactly you want to show in the column header and why exactly. Usually, a table doesn't work like that. The column header should represent a description of the column, e.g. "Name", "Email", "Title", "Price", etc. In your specific case, "Key" and "Value" would be candidate headers for those two columns. Note that this is not a JSF problem, but just a general model/design problem as to tabular data. You'd have exactly the same problem when trying the same in any other presentation framework.
如果你想使用某个元素的值(例如一个通用的度量单位),那么在 header:
中显式引用一个(第一个?)元素#{backingBean.someList[0].uom}
另请参阅