gpt4 book ai didi

JSF 更新复合组件 (Primefaces)

转载 作者:行者123 更新时间:2023-12-02 04:43:11 26 4
gpt4 key购买 nike

我有以下 UI Primefaces 片段:

<pou:growl id="growl" 
redisplay="false"
showDetail="false"
sticky="false" />

当我尝试更新此项目时,例如如下所示:

<pou:commandButton value="Update" 
update=":growl"/>

一切正常。

当我将咆哮移动到复合组件并尝试调用它时(即像这样):

<ez:growl/>

我收到一条错误消息:

javax.faces.FacesException: Cannot find component with identifier ":growl" referenced from "j_idt84:j_idt85:testForm:j_idt111".

我的问题是为什么要添加所有这些自动生成的名称以及如何控制它们以便我可以实际访问要更新的组件?

最佳答案

这是因为复合组件本质上是从 UINamingContainer 延伸而来的。 (如 <h:form><h:dataTable> 等),从而在其子级的客户端 ID 前面加上自己的 ID。

为了实现您的特定功能要求,首先为您的复合组件提供一个固定的 ID:

<ez:growl id="growl"/>

然后嵌入<p:growl>在纯 HTML 容器元素中的复合组件实现中,如 <div><span>使用复合组件的客户端 ID 作为元素 ID:

<cc:implementation>
<span id="#{cc.clientId}">
<p:growl />
</span>
</cc:implementation>

现在您可以使用update=":growl"通常的方式。

关于JSF 更新复合组件 (Primefaces),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11690635/

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