h:dataTable“var”属性在facet EL中不起作用

问题描述 投票:0回答:1

我的问题是我无法弄清楚如何在<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 el
1个回答
3
投票

这是可以预料的。在公共头中使用迭代变量的值是没有意义的。你会在那里展示什么?如果到达第二排怎么办?覆盖第一个元素的值?然后最后你只能看到最后一个元素的值。但是,由于这也没有意义,你想要的东西是不可能的。无论有没有JSF,它都没有任何意义。

来自@BalusC的评论引用也见于此也适用于:

..但你不清楚你想要在列标题中显示哪一行以及为什么要完全清楚。通常,表不能像那样工作。列标题应代表列的描述,例如“名称”,“电子邮件”,“标题”,“价格”等。在您的特定情况下,“密钥”和“值”将是这两列的候选标题。请注意,这不是JSF问题,而只是表格数据的一般模型/设计问题。在任何其他演示框架中尝试相同时,您会遇到完全相同的问题。

如果你想使用某个元素的值(例如measuer的公共单位),那么显式引用标题中的一个(第一个?)元素:

#{backingBean.someList[0].uom}

也可以看看

© www.soinside.com 2019 - 2024. All rights reserved.