Я построил простой составной компонент - более богатую командуLink. Я хочу, чтобы поддержать clientBehavior
, но когда есть <a4j:ajax>
прикрепленных к компоненту я иногда получаю исключение: ELException: Function 'rich:component' not found
'rich: component' not found: a4j: ajax с составным компонентом
Оно приходит только тогда, когда я использую #{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>
Эй, спасибо за ваш ответ - я немного вырезал из своего кода - в исходном коде отсутствует «{» (теперь исправлено). Я получаю ошибку Server, а не ошибку JavaScript. – user2304686