Wicket, Ajax und AjaxRequestTargets – onAfterAjaxRequest

Hallo zusammen,

oft gibt es eine Anforderung, nach jedem AjaxRequest beispielsweise ein Javascript an den Client zu senden (beispielsweise für Tracking, Logging etc..)

Man kann sich hier verkünsteln, aber Wicket macht es einem sehr einfach:

In der WebApplication kann folgendes überschrieben werden:


public void init() {
super.init();
getAjaxRequestTargetListeners().add(new IListener() {

public void onBeforeRespond(Map<String, Component> map,
AjaxRequestTarget target) {
String values = "";
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
values += ", " + it.next();
}
target.appendJavaScript("alert('Before AjaxRequest Target Responds - " + values + "')");

}

public void onAfterRespond(Map<String, Component> map,
IJavaScriptResponse response) {
String values = "";
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
values += ", " + it.next();
}
response.addJavaScript("alert('onAfterRespond Responds - " + values+"')");
}
});

// add your configuration here
}

Damit hat man einen Listener, der sowohl vor als auch nach jedem AjaxRequest ausgeführt wird, und man hat zu jedem Zeitpunkt die Möglichkeit, Javascript an den Client zu schicken.

Obendrein bekommt man von Wicket noch eine Map mit allen Komponenten übergeben, die dem AjaxRequestTarget hinzugefügt worden sind.

Übrigens, nur nebenbei aber richtig gut – AjaxRequestTargets kann man überall in der Applikation ermitteln, und zwar mit


AjaxRequestTarget.get()

Vorheriger Artikel
Hinterlasse einen Kommentar

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Log Out / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s

Follow

Get every new post delivered to your Inbox.