The easiest way to do that is to use http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/ajax/IAjaxIndicatorAware.html
See http://wicketinaction.com/2008/12/preventing-double-ajax-requests-in-3-lines-of-code/ for an example. Andrew On Thu, Jan 9, 2014 at 7:07 AM, Martin Grigorov <[email protected]>wrote: > Hi, > > You may show a veil above the table to prevent clicking on elements during > the ajax call > > Martin Grigorov > Wicket Training and Consulting > > > On Thu, Jan 9, 2014 at 1:01 PM, <[email protected]> wrote: > > > Hello, > > > > in my application I have a table with some custom toolbars. This table > > shows some data from the database if the user clicks an ajax button. But > if > > the user clicks the button again, the table will be replaced by a new > table > > with the new data. Here an example: > > > > target.add(page.get("table").replaceWith(getNewTable(newData))); > > > > This works fine. :) > > > > Now the problem. When the user clicks the ajax button again the ajax > > request begins running, but the user is able to click one of toolbars of > > the shown table. So I get an exception: the table.toolbar was not found. > > This is ok because of the replacement with a new table. I want to disable > > the shown table while the ajax request is running. If the request > detaches > > the old table will be replaced by the new table with enabled toolbars. > > > > I tried to override the onEvent-method of my table. Here you can see the > > code: > > @Override > > public void onEvent(IEvent<?> event){ > > if(event.getPayload() instanceof AjaxRequestTarget){ > > AjaxRequestTarget actualRequestTaget = > > (AjaxRequestTarget)event.getPayload(); > > actualRequestTaget.addListener(new > > AjaxRequestTarget.AbstractListener(){ > > @Override > > public void onBeforeRespond(Map<String,Component> map, > > AjaxRequestTarget target) { > > setEnabled(false); > > } > > @Override > > public void onAfterRespond(Map<String,Component> map, > > AjaxRequestTarget.IJavaScriptResponse response) { > > setEnabled(true); > > } > > }); > > } > > } > > > > But this didn't work. I can click the toolbars while the request is > > running and then I get the old excetion. The table will be disabled if > the > > request has finished. > > > > Is there any possibility to realize it? > > > > > > > > Mit freundlichen Grüßen > > Christoph Manig > > Systems Engineer > > > > T-Systems International GmbH > > Systems Integration - SC Travel, Transport & Logistics > > Hoyerswerdaer Str. 18 > > 01099 Dresden > > tel.: +49 (0) 351 / 8152 - 188 > > fax: +49 (0) 351 / 8152 - 209 > > email: [email protected] > > > > > > > > >
