0

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

<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}或者,有没有办法通过加上某种大括号符号 ( )来获取特定元素[]

4

1 回答 1

1

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

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

如果您遇到问题,它是由其他地方引起的,需要以不同的方式解决。只有且仅当您使用视图构建时间标记在循环中生成物理上的多个组件时,例如 JSTL <c:forEach>,那么组件树中确实会有物理上的多个<h:inputText>组件,您需要将它们绑定到数组或地图。但目前显然不是这样。

于 2013-06-21T12:40:48.930 回答