Проблемы ajaxification составного компонента

Если я прочитал много записей в соответствии с составными компонентами ajaxify и не смог найти мою ошибку, из-за чего ajax-запрос не отправлялся. Возможно, кто-нибудь может найти это.

Декларация составных компонентов component.xhtml похоже

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:composite="http://java.sun.com/jsf/composite"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<composite:interface componentType="myComponentType">
    <composite:attribute name="ajaxListener" method-signature="void listener(javax.faces.event.AjaxBehaviorEvent)" required="false"/>
    <composite:clientBehavior name="update" event="click" targets="#{cc.clientId}:submit"/>
</composite:interface>

<composite:implementation>
    <h:form id="form" prependId="false">
        <h:panelGroup layout="block" id="#{cc.clientId}-body">
            <h:commandButton type="submit" id="submit" value="Send"/>
        </h:panelGroup>
    </h:form>
</composite:implementation>

</html>

И я использую этот компонент следующим образом

<h:panelGroup id="viewport" layout="block" binding="#{controller.viewport}">
    ... 
    <c:forEach items="#{controller.elements}" var="element">

        <my:component id="#{element.id}">
            <f:ajax event="update" listener="#{controller.update}" render="@form"/>
        </my:component>

        ... rendering some different components by element.type what requires JSTL c:forEach/c:if

    </c:forEach>
</h:panelGroup>

Моя конкретная проблема заключается в том, что FireBug не перехватывает ajax-запрос, когда submit кнопка нажата, но страница перезагружается. Таким образом, событие ajax не было правильно привязано к кнопке отправки.

В первый раз я попробовал это с f:ajax объявлено внутри составного компонента. Поэтому я использую атрибут ajaxListener, Это работает, но update-метод с подписью void update(AjaxBehaviorEvent e) не срабатывает

Надеюсь, кто-нибудь может определить ошибку!


Обновить

Моя проблема в том, как я отрисовываю составные компоненты внутри h:panelGroup с использованием JSTL-тегов c:forEach а также c:if, Если я опущу эти теги и вставлю статический составной компонент, метод слушателя в ajaxListener-attribute может быть запущен и ajax-запрос отправляется правильно. Описанный выше метод не работает в любом случае.

Обновление Rev. 2

Возможно, кто-нибудь может объяснить, почему слушатель ajax не привязан правильно?!

Заранее спасибо!

0 ответов

Другие вопросы по тегам