1

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

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

从我的简短实验来看,似乎不可能引用它们,但我想知道是否有替代策略来实现这一点。

4

1 回答 1

1

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

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

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

<h:panelGroup id="childComponent">
    <h:outputText value="#{bean.text}" rendered="#{bean.rendered}" />
</h:panelGroup>
于 2011-04-20T01:31:08.253 回答