Hi,

Your description sounds somehow related to
https://issues.apache.org/jira/browse/WICKET-5432.

'input' event is not supported (properly) by all browsers. That's why
Wicket.ChangeHandler does some extra logic.
See https://developer.mozilla.org/en-US/docs/Web/Events/input

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

On Tue, May 5, 2015 at 7:05 PM, Marcus Husar <[email protected]> wrote:

> Hello Martin,
>
> I solved my problem 5 minutes ago. I haven’t seen your mail because I was
> working hard to find the source of this behaviour.
>
> The solution was to use AjaxFormComponentUpdatingBehavior with event type
> "input" instead of OnChangeAjaxBehavior.
>
> Martin wrote:
> > How do you trigger the update in this case? with "unfocused text field"
> >
> > I don't see any reason why Wicket will deliver out of date information
> like
> > this.
>
> For example: I entered 3 charaters into the text field which sent out one
> post request each. Each of those post requests got an Ajax response with
> correct table text and old event registrations of the table’s AjaxLinks.
> When the text field then lost its focus because of clicking somewhere on
> the page or into Firefox developer tools the browser sent out a fourth post
> request which got correct event registrations.
>
> After I switched to AjaxFormComponentUpdatingBehavior everything was fine.
>
> ...
>
> I looked into the source code of OnChangeAjaxBehaviour. What it does is to
> use the event type "onchange". Also it adds a change handler to the
> reponse:
>
> response.write("new Wicket.ChangeHandler('" + id + "');");
>
> This change handler maybe fires on change and blur. Maybe I had problems
> with AjaxLinks inside a refreshed table because of some kind of race
> condition.
>
> Let me know if you still want to see this as a quickstart.
>
> Thanks,
> Marcus
>
>
>
> Martin Grigorov <[email protected]> schrieb am Di., 5. Mai 2015 um
> 16:53 Uhr:
>
> > Hi,
> >
> > On Tue, May 5, 2015 at 2:20 PM, Marcus Husar <[email protected]>
> > wrote:
> >
> > > Hello,
> > >
> > > I have two AjaxLinks inside a panel which is inside an IColumn of a
> > > DataTable. The table is refreshed by a TextField which implements an
> > > OnChangeAjaxBehavior. This behaviour manipulates the data provider and
> > adds
> > > the table to the target.
> > >
> > > When text is entered to the text field the table is filtered as
> expected.
> > > But the response body of the Ajax post request delivers event
> > registrations
> > > of the AjaxLinks rendered in the iteration before.
> > >
> > > E.g.: IBehaviourlisteners for AjaxLink IDs id54 and id55 are delivered.
> > But
> > > the links have the IDs id56 and id57.
> > >
> > > Example:
> > >
> > > <div>
> > >     <a id="id56" href="javascript:;">Edit</a>
> > >     <a id="id57" href="javascript:;">Delete</a>
> > > </div>
> > >
> > > ...
> > >
> > >
> >
> <evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"c":"id54","u":"./SiglumIndexPage?4-1.IBehaviorListener.0-container-fragment-siglumDataTable-body-rows-26-cells-3-cell-editLink","e":"click"});})();(function(){Wicket.Ajax.ajax({"c":"id55","u":"./SiglumIndexPage?4-1.IBehaviorListener.0-container-fragment-siglumDataTable-body-rows-26-cells-3-cell-deleteLink","e":"click"});})();]]></evaluate></ajax-response>
> > >
> > > If I unfocus the text field I get a response with the correct event
> > > registrations.
> > >
> >
> > How do you trigger the update in this case? with "unfocused text field"
> >
> > I don't see any reason why Wicket will deliver out of date information
> like
> > this.
> > If you can reproduce this in a quickstart then please attach it to a
> ticket
> > in JIRA and we will take a look.
> >
> >
> > > ...
> > >
> > >
> >
> <evaluate><![CDATA[(function(){Wicket.Ajax.ajax({"c":"id56","u":"./SiglumIndexPage?4-1.IBehaviorListener.0-container-fragment-siglumDataTable-body-rows-27-cells-3-cell-editLink","e":"click"});})();(function(){Wicket.Ajax.ajax({"c":"id57","u":"./SiglumIndexPage?4-1.IBehaviorListener.0-container-fragment-siglumDataTable-body-rows-27-cells-3-cell-deleteLink","e":"click"});})();]]></evaluate></ajax-response>
> > >
> > > Has anyone seen similar problems? Is it possible enforce an event
> > > registration refresh for AjaxLinks?
> > >
> > > Just ask for code examples if needed.
> > >
> > > Regards,
> > > Marcus
> > >
> >
>

Reply via email to