我想问是否可以在 a4j:repeat 标记中使用 var 属性作为内部组件的绑定。例如
<a4j:repeat value="#{myController.bindingComponents}" var="component">
<h:panelGroup binding="#{component}"/>
</a4j:repeat>
我已经尝试过了,但是在评估绑定表达式时组件为空。
我想问是否可以在 a4j:repeat 标记中使用 var 属性作为内部组件的绑定。例如
<a4j:repeat value="#{myController.bindingComponents}" var="component">
<h:panelGroup binding="#{component}"/>
</a4j:repeat>
我已经尝试过了,但是在评估绑定表达式时组件为空。
不,那是不可能的。属性是在视图构建时评估的binding
(就像id
属性和所有标记处理程序一样),而作为 UI 组件的 of 是在视图渲染时评估的value
。<a4j:repeat>
所以在binding
属性评估的那一刻,#{component}
is null
,因为<a4j:repeat>
那时还没有运行。
如果您再想一想,它应该完全有道理:JSF 组件树中只有一个 <h:panelGroup>
会多次呈现其输出。<h:panelGroup>
正如您所期望的那样,以这种方式生成多个组件是不正确的。
为了实现您心目中的特定功能需求,您可能希望改用视图构建时迭代标记,例如 JSTL <c:forEach>
。