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

标签 jsf namespaces richfaces el composite

我已经构建了一个简单的复合组件——一个“更丰富”的 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/

相关文章:

jquery - 使用 Return/Enter 键将编辑的单元格保存在 Primefaces 3.4 单元格内可编辑数据表中

java - JSF 面板定位

typescript - 转换具有相同名称的命名空间/模块容器会导致冲突

java - Richfaces HtmlColumn 样式类覆盖

javascript - <o :commandScript>: reference namespaced JS function name

javascript - 如何点击 p :commandButton using javascript

php - 命名空间接口(interface)

c++ - 从命名空间基类虚拟继承,具有来自命名空间的私有(private)成员

java - 如何知道在 richfaces PickList 中单击了哪个项目

sorting - RichFaces 扩展表数据模型 : sorting columns retrieves all rows