如何使用EL引用DataTable中的绑定组件?

时间:2013-06-21 08:38:21

标签: jsf-2 binding datatable el

使用表达式语言,如何访问在数据表中绑定和重复的组件?

<h:dataTable value="#{bean.items}" var="item" id="table">
    <h:column>
        <h:inputText value="#{item.name}" id="name" binding="#{mybinding}"/>
    </h:column>
</h:dataTable>

我是否应该为每个绑定提供一个生成的名称,其中包含文字和行索引的串联,例如('mybinding_1','mybinding_2'等),如果是,如何?

或者有没有办法用#{mybinding}加上某种支撑符号([])获得特定元素?

1 个答案:

答案 0 :(得分:1)

这里有一种误解。组件树中肯定没有物理上多个<h:inputText>组件。根据父表组件的当前状态,只有一个组件的HTML表示生成多次。您可以通过从FacesContext#getViewRoot()开始遍历组件树来确认这一点,您最终会找到只有一个 <h:inputText>组件。

所以,binding="#{mybinding}"完全没问题。

如果你遇到问题,它会在其他地方引起,需要以不同的方式解决。仅当且仅当您使用view build time tag在循环中生成物理上的多个组件(例如JSTL <c:forEach>)时,组件树中确实存在物理上多个<h:inputText>组件,并且你需要将它们绑定到数组或映射。但目前显然不是这样。