我有类似的东西
<ui:repeat value="#{val}" id="repeatID" var="var">
<h:panelGroup layout="block" id="blockForRender">
<f:ajax execute="@this" render=":#{cc.clientId}:blockForRender"> text </f:ajax>
</h:panelGroup>
</ui:repeat>
这是make错误 - “无法在组件的上下文中找到它”。 为什么?我怎么能这样做?
不,这不起作用。也许是因为ajax在其他复合材料中?
<ui:repeat value="#{val}" id="repeatID" var="var">
<composite:otherComposite id="otherComposite">
<h:panelGroup layout="block" id="blockForRender">
<f:ajax execute="@this" render=":#{cc.clientId}:blockForRender"> text </f:ajax>
</h:panelGroup>
</composite:otherComposite>
</ui:repeat>
答案 0 :(得分:2)
因为具有该ID的组件根本不存在。它的前缀是<ui:repeat>
的迭代索引,如此ccClientId:0:blockForRender
。在浏览器中打开页面并执行查看源以自行查看。
只需省略绝对ID前缀,使其相对于最近的父UINamingContainer
(在您特定的 - 过度简化的片段中是<ui:repeat>
本身)。
<f:ajax ... render="blockForRender">