or your question is why this works? On Sat, Oct 20, 2012 at 6:18 PM, Ernesto Reinaldo Barreiro < reier...@gmail.com> wrote:
> Gonzalo, > > You want to use AbstractDefaultAjaxBehavior as context to serve some > JSON? Then what you do is > > add(behavior = new AbstractDefaultAjaxBehavior() { > @Override > protected void respond(AjaxRequestTarget target) { > TextRequestHandler handler = new TextRequestHandler(...); > RequestCycle.get().scheduleRequestHandlerAfterCurrent(handler); > } > }); > > then use use behavior.getCallbackUrl() to generate the URL you need to use > on client side to retrieve that JSON. > > > On Sat, Oct 20, 2012 at 5:57 PM, Gonzalo Aguilar Delgado < > gagui...@aguilardelgado.com> wrote: > >> Hello again, >> >> Sorry. I was thinking about extending AbstractAjaxBehavior directly. It >> seems to have cleaner code but I loss some functionality. >> >> Could it be right? >> >> >> And doing like you said. The getRequestHandler(); returns your >> TextRequestHandler. Do I need the stuff inside >> AbstractDefaultAjaxBehavior? >> >> Functions like updateAjaxAttributes, renderAjaxAttributes, >> appendListenerHandler, getCallbackFunction and so on, does not seem >> useful for me now. >> >> >> public final void onRequest() >> { >> // WebApplication app = >> (WebApplication)getComponent().getApplication(); >> // AjaxRequestTarget target = >> app.newAjaxRequestTarget(getComponent().getPage()); >> // >> // RequestCycle requestCycle = RequestCycle.get(); >> // requestCycle.scheduleRequestHandlerAfterCurrent(target); >> // >> // respond(target); >> >> IRequestHandler handler = getRequestHandler(); >> >> if(handler!=null) >> >> RequestCycle.get().scheduleRequestHandlerAfterCurrent(handler); >> } >> >> >> El sáb, 20-10-2012 a las 16:08 +0200, Ernesto Reinaldo Barreiro >> escribió: >> >> > on the respond method of your AbstractDefaultAjaxBehavior >> > >> > On Sat, Oct 20, 2012 at 4:07 PM, Ernesto Reinaldo Barreiro < >> > reier...@gmail.com> wrote: >> > >> > > Try the following >> > > >> > > TextRequestHandler textRequestHandler = new >> > > TextRequestHandler("application/json", "UTF-8", "Your JSON HERE"); >> > > >> RequestCycle.get().scheduleRequestHandlerAfterCurrent(textRequestHandler); >> > > >> > > On Sat, Oct 20, 2012 at 4:00 PM, Gonzalo Aguilar Delgado < >> > > gagui...@aguilardelgado.com> wrote: >> > > >> > >> Hello, >> > >> >> > >> I was looking to some code and googling around but cannot find a >> > >> suitable solution for my problem. >> > >> >> > >> >> > >> I have an AbstractDefaultAjaxBehavior that I'm implemented the >> function >> > >> respond(AjaxRequestTarget target) like this >> > >> >> > >> --- >> > >> @Override >> > >> protected void respond(AjaxRequestTarget target) { >> > >> >> > >> >> > >> >> > >> JsonChoiceRenderer<T> jsonRenderer = new >> > >> JsonChoiceRenderer<T>(getChoices()); >> > >> >> > >> target.appendJavaScript(jsonRenderer.renderJsonArray(getComponent(), >> > >> getRenderer())); >> > >> >> > >> } >> > >> >> > >> --- >> > >> >> > >> But this is not a JSON response when it is called from javascript. I >> > >> want to respond with an application/json response. >> > >> >> > >> I saw something like: >> > >> >> > >> RequestCycle requestCycle = RequestCycle.get(); >> > >> requestCycle.getResponse().setCharacterEncoding("UTF-8"); >> > >> >> requestCycle.getResponse().setContentType("application/json;"); >> > >> >> > >> But it means that I have to override the final void onRequest() of >> the >> > >> AbstractAjaxBehavior class, but this is final so I cannot. >> > >> >> > >> >> > >> What's the best way to do it with newer versions of wicket? >> > >> >> > >> >> > >> Thank you a lot in advance. >> > >> >> > > >> > > >> > > >> > > -- >> > > Regards - Ernesto Reinaldo Barreiro >> > > Antilia Soft >> > > http://antiliasoft.com >> > > >> > > >> > >> > >> > > > > -- > Regards - Ernesto Reinaldo Barreiro > Antilia Soft > http://antiliasoft.com > > -- Regards - Ernesto Reinaldo Barreiro Antilia Soft http://antiliasoft.com