Bazı Ajax davranışlarını kullanan bir JSF 2 bileşik bileşenim var. Kompozit bileşenimin içinde <f:ajax>
etiketine listener
yöntemini eklemek istiyorum, ancak listener
yöntemi, <composite:interface>
'da <composite:attribute>
olarak sağlanmalıdır.JSF 2 - Bileşik bileşen arabirimine Ajax dinleyici yöntemini nasıl ekleyebilirim?
<f:ajax>
etiketi şu anda böyle bir dinleyiciye kodlanmış olan
:
fasulye dinleyici yöntem bu imzası vardır<f:ajax
event="valueChange"
execute="@this"
listener="#{controller.genericAjaxEventLogger}"
render="#{cc.attrs.ajaxRenderTargets}" />
:
public void genericAjaxEventLogger(AjaxBehaviorEvent event)
throws AbortProcessingException {
// implementation code...
}
Ben kompozit istiyorum Bileşen böyle bir şey olması için sayfa kendi olay yöntemini sağlayabilir, ancak arayüz için doğru sözdizimini çözemiyorum.
<f:ajax
event="valueChange"
execute="@this"
listener="#{cc.attrs.ajaxEventListener}"
render="#{cc.attrs.ajaxRenderTargets}" />
Bunu nasıl yapabilirim?
ÇÖZÜM İLE GÜNCELLEME:
Ben BalusC önerdiği yaklaşım aldı ve o inşaat büyük. İlgili snippet'leridir:
<composite:interface>
<composite:attribute
name="myattributeUpdatedEventListener"
method-signature="void listener()"
required="true" />
...
</composite:interface>
Ajax etiketi benim kompozit bileşeni
<f:ajax
event="valueChange"
execute="@this"
listener="#{cc.attrs.myattributeUpdatedEventListener}"
render="#{cc.attrs.ajaxRenderTargets}" />
Ben kompozit bileşeni kullanmak benim sayfa yer kullanılan kompozit bileşende arabirim bildirimi
<h:form>
<compcomp:myCompositeComponent
myattributeUpdatedEventListener="#{myBackingBean.updatedEventListenerXYZ}" />
</h:form>
Ve destek kabuğumdaki yöntem
public void updatedEventListenerXYZ() {
// do something here...
}
Çözüm için teşekkürler, gerçekten bana yardımcı oluyor. –
Bir parametreyi bir yöntemden geçirerek yapmak mümkün mü? Örnekte # {myBackingBean.updatedEventListenerXYZ} örneğini geçirmek yerine, # {myBackingBean.myMethod (cc.attrs.myparam)} gibi bir şey iletmek yerine, – dcalap