В какой среде вы тестировали / использовали его? Это не работает для меня на GF 3.1 и Tomcat 7 с Mojarra 2.1.1.

я есть составной компонент JSF 2, который использует некоторое поведение Ajax. Я хочу добавитьlistener метод к<f:ajax> тег внутри моего составного компонента, ноlistener метод должен быть представлен как<composite:attribute> в<composite:interface>.

<f:ajax> тег внутри моего составного компонента в настоящее время жестко запрограммирован для слушателя следующим образом:

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{controller.genericAjaxEventLogger}"
    render="#{cc.attrs.ajaxRenderTargets}" />

У метода слушателя на бине есть эта подпись:

public void genericAjaxEventLogger(AjaxBehaviorEvent event) 
        throws AbortProcessingException {
    // implementation code...
}

Я хочу, чтобы составной компонент был примерно таким, чтобы страница могла предоставлять собственный метод события, но я не могу понять правильный синтаксис для интерфейса.

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{cc.attrs.ajaxEventListener}"
    render="#{cc.attrs.ajaxRenderTargets}" />

Как я могу это сделать?

ОБНОВЛЕНО РЕШЕНИЕМ:

Я принял подход, предложенный BalusC, и он отлично работает. Соответствующие фрагменты:

Объявление интерфейса в составном компоненте

<composite:interface>
    <composite:attribute
        name="myattributeUpdatedEventListener"
        method-signature="void listener()"
        required="true" />
    ...
</composite:interface>

Тег Ajax, используемый в моем составном компоненте

<f:ajax
    event="valueChange"
    execute="@this"
    listener="#{cc.attrs.myattributeUpdatedEventListener}"
    render="#{cc.attrs.ajaxRenderTargets}" />

Место на моей странице, где я использую составной компонент

<h:form>
    <compcomp:myCompositeComponent
        myattributeUpdatedEventListener="#{myBackingBean.updatedEventListenerXYZ}" />
</h:form>

И метод на моем бобе

public void updatedEventListenerXYZ() {
    // do something here...
}

Ответы на вопрос(2)

Ваш ответ на вопрос