繁体   English   中英

JSF更新复合组件(Primefaces)

[英]JSF Updating Composite Component (Primefaces)

我有以下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>嵌入到复合组件的实现中,在<div><span>类的纯HTML容器元素中,复合组件的客户端ID作为元素ID:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM