0

我有这样的事情

<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>

这是制造错误 - “无法在组件的上下文中找到它”。为什么?我怎么能做到这一点?

不,这不起作用。也许是因为 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>
4

1 回答 1

2

因为具有该 ID 的组件根本不存在。相反,它以<ui:repeat>like so的迭代索引为前缀ccClientId:0:blockForRender。在浏览器中打开页面并执行查看源代码以自己查看。

只需省略绝对 ID 前缀,使其相对于最近的父级UINamingContainer(即<ui:repeat>在您的特定 - 严重过度简化 - 片段中的自身)。

<f:ajax ... render="blockForRender">

也可以看看:

于 2012-11-14T12:28:45.840 回答