【问题标题】:jsf error "cannot locate.." on f:ajax in the ui:repeatjsf 错误“无法定位..”在 ui:repeat 中的 f:ajax
【发布时间】:2012-11-14 12:13:10
【问题描述】:

我有这样的事情

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

【问题讨论】:

  • 在以后的问题中,如果您发布实际可执行代码会很有帮助(我们可以直接复制'n'paste'n'run而不需要做一些基于有根据的猜测进行更改)而不是过于简单的 sn-ps(实际上在复制'n'粘贴时根本不会编译和执行)。

标签: ajax user-interface jsf-2


【解决方案1】:

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

只需省略绝对 ID 前缀,使其相对于最近的父级 UINamingContainer(在您的特定 - 严重过度简化 - sn-p 中是 &lt;ui:repeat&gt; 本身)。

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

另见:

【讨论】:

  • 根据您的问题更新,假设这仍然过于简单化(&lt;f:ajax&gt; 即在 &lt;h:panelGroup&gt; 上根本不起作用)这个结构应该仍然适用于 @987654329 @.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多