gpt4 book ai didi

ajax - ui 中的组件 ID :repeat problems

转载 作者:行者123 更新时间:2023-12-04 06:20:56 24 4
gpt4 key购买 nike

我正在尝试 render祖父组件。
编码:

<h:form prependId="false>
<h:panelGroup id="outer_panel">
<ui:repeat var="curr" value="#{bean.map}">
<h:panelGroup id="inner_panel">
<h:commandButton value="Remove" action="actionThing" >
<f:ajax render="outer_panel" />
</h:commandButton>
</h:panelGroup>
</ui:repeat>
</h:panelGroup>
</h:form>

我得到一个异常(exception):
javax.faces.FacesException: Component with id:outer_panel not found

试图将索引添加到 id,这也不起作用:
<h:form prependId="false>
<h:panelGroup id="outer_panel">
<ui:repeat var="curr" value="#{bean.map}" varStatus="loop">
<h:panelGroup id="inner_panel">
<h:commandButton value="Remove" action="actionThing" >
<f:ajax render="#{loop.index+1}:outer_panel" />
</h:commandButton>
</h:panelGroup>
</ui:repeat>
</h:panelGroup>
</h:form>

知道为什么找不到ID吗?

谢谢。

最佳答案

未找到,因为您在 render 中使用了相对客户端 ID属性。它变得相对于最近的父项 naming container成分。在这种情况下,就是 <ui:repeat> (它预先生成了带有行索引的子项的客户端 ID)。所以 ID 为 outer_panel 的组件必须在 <ui:repeat> 内为了让它工作。然而,outer_panel实际上是在它之外。

您需要指定绝对客户端 ID 而不是相对客户端 ID。要使其成为绝对的(以便它基本上从 View 根目录开始扫描),请使用 : 作为客户端 ID 的前缀。 .

<f:ajax render=":outer_panel" />

对于您没有使用 prependId="false" 的情况在 <h:form> ,那么你应该使用
<f:ajax render=":form_id:outer_panel" />

反而。

关于ajax - ui 中的组件 ID :repeat problems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com