package be.selckin.swu.jquery;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.ResourceReference;
public abstract class JsonAjaxBehavior extends AbstractDefaultAjaxBehavior {
private static final ResourceReference JAVASCRIPT = new JQueryDependantJavaScriptReference(JsonAjaxBehavior.class, "JsonAjaxBehavior.js");
@Override
protected final void respond(AjaxRequestTarget target) {
Request request = RequestCycle.get().getRequest();
String func = request.getRequestParameters().getParameterValue("callback").toString();
Javascripter.callFunction(target.getHeaderResponse(), func, respond(request, target));
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forReference(JAVASCRIPT));
super.renderHead(component, response);
}
protected abstract Object respond(Request request, AjaxRequestTarget target);
}