使用表达式语言,如何访问在数据表中绑定和重复的组件?
<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}
加上某种支撑符号([]
)获得特定元素?
答案 0 :(得分:1)
这里有一种误解。组件树中肯定没有物理上多个<h:inputText>
组件。根据父表组件的当前状态,只有一个组件的HTML表示生成多次。您可以通过从FacesContext#getViewRoot()
开始遍历组件树来确认这一点,您最终会找到只有一个 <h:inputText>
组件。
所以,binding="#{mybinding}"
完全没问题。
如果你遇到问题,它会在其他地方引起,需要以不同的方式解决。仅当且仅当您使用view build time tag在循环中生成物理上的多个组件(例如JSTL <c:forEach>
)时,组件树中确实存在物理上多个<h:inputText>
组件,并且你需要将它们绑定到数组或映射。但目前显然不是这样。