gpt4 book ai didi

jsf - '丰富的 :component' not found: a4j:ajax with a composite component

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

我已经构建了一个简单的复合组件——一个“更丰富”的 commandLink。我希望它支持 clientBehavior ,但是当有 <a4j:ajax>附加到组件我有时会得到异常:ELException: Function 'rich:component' not found
只有在我使用 #{rich:component('...')} 时才会出现在 <a4j:ajax> 的任何属性内.例如 oncomplete="#{rich:component('...')}.show()"
编辑:我收到服务器错误,而不是 JavaScript 错误。

复合组件(简化):

<composite:interface>
<composite:attribute name="style" />
<composite:clientBehavior name="click" event="action" targets="commandLink" default="true"/>
</composite:interface>

<composite:implementation>
<h:commandLink id="commandLink" style="#{cc.attrs.style}">
<!-- my custom component content -->
</h:commandLink>
</composite:implementation>

该组件的问题使用如下所示:
<myLib:commandLink value="Custom CmdLink">
<a4j:ajax render="@form" execute="@form"
oncomplete="#{rich:component('myEditPopup')}"/>
</myLib:commandLink>

但是下面的代码就像一个魅力:
<h:commandLink value="test">
<a4j:ajax render="@form" execute="@form"
oncomplete="#{rich:component('myEditPopup')}.show()"/>
</h:commandLink>

编辑: 这个也有效:
<a4j:ajax render="@form" execute="@form"
oncomplete="#{rich:component('myEditPopup')}.show()">
<myLib:commandLink value="label"/>
</a4j:ajax>

最佳答案

这似乎是 Mojarra 中的一个错误(我们一直在使用 2.1.6 版本),EL 丢失了 namespace “rich”。
一种解决方法是在 a4j:ajax 标记中为每次使用声明命名空间:

                <myLib:commandLink value="Show">
<a4j:ajax render="@form" execute="@form" xmlns:rich="http://richfaces.org/rich"
oncomplete="#{rich:component('myEditPopup')}.show()"/>
</myLib:commandLink>

将 Mojarra 更新到 2.1.26 后,问题消失了,不需要此解决方法。

关于jsf - '丰富的 :component' not found: a4j:ajax with a composite component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177701/

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