Hi,

You can show a veil above the data view container or the whole page until
the Ajax response comes.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Nov 3, 2014 at 1:24 PM, Aleksey <[email protected]> wrote:

> I use Wicket 1.5.10 and I'm stuck at problem with DataView.
> I have overview page which contains filter and some container with
> elements.
>
> You can see simple example prepared by me:
>
> Filter contains TextField and AjaxLink.
> *HTML:*
> <p>
>         <label>Search field</label>
>         <input wicket:id="filteredField" type="text">
> </p>
> <p>
>          Filter Link
> </p>
>
> *JAVA*
> TextField<String> filteredField = new TextField<String>("filteredField",
> new
> PropertyModel<String>(HomePage.this, "searchLink"));
> filteredField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
> private static final long serialVersionUID = -4317299769705904431L;
>
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
>         //do nothing
> }
> });
> filteredField.setOutputMarkupId(true);
> add(filteredField);
>
> add(new AjaxLink<Void>("filterLink") {
> private static final long serialVersionUID = -1544074968276382557L;
>
> @Override
> public void onClick(AjaxRequestTarget target) {
> target.add(dataViewContainer);
> try {
>         // use to demonstare the problem
>         Thread.sleep(1000);
> } catch (InterruptedException e) {
>         e.printStackTrace();
> }
> }
> });
>
> Container with elements is DataView  where each element is Link.
> *JAVA*:
> private class MyDataView extends DataView<String> {
>         private static final long serialVersionUID = -4473460467718688831L;
>
>         protected MyDataView(String id) {
>             super(id, new MyDataProvider());
>         }
>
>         @Override
>         protected void populateItem(Item<String> item) {
>                         Link<Void> link = new Link<Void>("elementLink") {
>
>                                 private static final long serialVersionUID
> = 1582520788088815276L;
>
>                                 @Override
>                                 public void onClick() {
>
>                                 }
>
>                         };
>                         link.add(new Label("label",
> item.getModelObject()));
>                         item.add(link);
>         }
>
>     }
>
> *HTML*:
> <div wicket:id="dataViewContainer">
>         <div wicket:id="dataView">
>
>        </div>
> </div>
>
> If I click on "filterLink" and then immediately click on some link in
> DataView, then Wicket throws exception:
> <pre>
> org.apache.wicket.request.handler.ComponentNotFoundException: Could not
> find
> component 'dataViewContainer:dataView:5:elementLink' on page 'class
> com.mycompany.HomePage
>      at
>
> org.apache.wicket.request.handler.PageAndComponentProvider.getComponent(PageAndComponentProvider.java:181)
>      at
>
> org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.getComponent(ListenerInterfaceRequestHandler.java:92)
>      at
>
> org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:239)
>      at
>
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:784)
>      at
>
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>      at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
>      at
>
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
>      at
>
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
>      at
>
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
>      at
>
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:244)
> </pre>
>
> We meet this problem very often when our customers do not wait for response
> and click on a link in DataView.
> What do I have to do in this case? What approach is the best here?
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/Problem-with-dynamic-links-in-DataView-tp4668229.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to