Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the AjaxRequestTarget inside Wicket's onBeforeRender() method of a component?

I have an Ajax event that triggers the redraw of various Wicket panels. Some panels have additional calculations of their own inside their onBeforeRender() method. If there is an error, I want to display it to the user. But I can't add the FeedbackPanel to the AjaxRequestTarget because I don't have access to it anymore inside the panel that is being redrawn.

Is there a way to get the AjaxRequestTarget inside onBeforeRender() of a Wicket component? Is it even possible to add additional components to the Ajax target once the first ones are already in onBeforeRender() state?

Is there a better way to add the FeedbackPanel to the Ajax target if only the panels that need to be redrawn can decide if there is an error or not?

like image 317
black666 Avatar asked Oct 08 '13 11:10

black666


1 Answers

Getting the AjaxTarget is done like this:

AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class);

Unfortunately, like expected, I can't add components to the target once I'm in the rendering phase. But Wicket provides the interface ITargetRespondListener with the method onTargetRespond(AjaxRequestTarget target). Here I can add anything I want to the target.

like image 156
black666 Avatar answered Sep 25 '22 22:09

black666