jsf错误“找不到..”在f:ajax中的ui:重复

时间:2012-11-14 12:13:10

标签: ajax user-interface jsf-2

我有类似的东西

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

1 个答案:

答案 0 :(得分:2)

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

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

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

另见: