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); }