Basically, I wanted to see how I can write my own ajaxified component using the new AjaxBehavior mechanism.
The following is based on guesses and try-and-error, but at least the AJAX request is sent to the server. However, the event is not passed to the method specified in the "listener" attribute of the f:ajax tag.
So far, I have:
----- begin component
@FacesComponent (value="CustomAjaxComponent")
public class CustomAjaxComponent extends UIComponentBase implements ClientBehaviorHolder {
@Override
public String getFamily() {
return null;
}
@Override
public void encodeEnd(FacesContext context) throws IOException {
ClientBehaviorContext behaviorContext = ClientBehaviorContext.createClientBehaviorContext(context, this, "click", getId(), null);
ResponseWriter responseWriter = context.getResponseWriter();
responseWriter.startElement("div", null);
responseWriter.writeAttribute("id", getId(), null);
responseWriter.writeAttribute("onclick", getClientBehaviors().get("click").get(0).getScript(behaviorContext), null);
responseWriter.write("click me!");
responseWriter.endElement("div");
}
@Override
public Collection<String> getEventNames() {
return Arrays.asList("click");
}
}
----- end component
and an XHTML page where I use it:
----- begin XHTML page
...
<x:customAjaxComponent>
<f:ajax event="click" execute="@form" render="@form" listener="#{ajaxPage.processClick}" />
</x:customAjaxComponent>
...
----- end XHTML page
[Message sent by forum member 'denbo' (blastculture_at_web.de)]
http://forums.java.net/jive/thread.jspa?messageID=363904