重新渲染复合组件的子项

时间:2011-04-18 14:54:40

标签: ajax jsf jsf-2 render composite-component

有没有办法指定复合组件的子组件使用f重新渲染:ajax:

<f:ajax render="compositeComponent:childComponent" />

从我的简短实验中,似乎无法引用它们,但我想知道是否有另一种策略来实现这一目标。

1 个答案:

答案 0 :(得分:1)

应该可以正常工作。它完全是客户端(即,JSF生成的JavaScript代码将其定位在HTML DOM树中)。

您可能引用了错误的客户端ID。在Web浏览器中打开页面,右键单击查看源,在页面源中找到生成的HTML元素并确定其id属性。您在render属性中指定的那个应该绝对地引用(前缀为:)或相对(与父UINamingContainer组件相比)。

另一个可能的原因是你将rendered属性放在同一个复合组件的子项上,该子项评估false,这反过来导致生成的HTML元素在HTML DOM树中完全丢失。然后,您希望将rendered属性放在该组件的子级上,如下所示:

<h:panelGroup id="childComponent">
    <h:outputText value="#{bean.text}" rendered="#{bean.rendered}" />
</h:panelGroup>