You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Zbynek Vavros <zb...@gmail.com> on 2016/01/20 14:44:47 UTC

AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Hi,

in our project we have an AutoCompleteTextField with
AjaxFormComponentUpdatingBehavior ("change" event) attached.

Small prototype I did proves that HTTP POST is done when an item is
selected from choices (either by mouse or keyboard). But for some reason
the same code doesn't work in our project. It is required to move focus to
another component for the POST to be send. The behavior works like if
"blur" type of event is set but there is "change".

I'm quite new to Wicket so I tried to compare all HTML & JS files but they
all seem to be the same.
Is there some other debug I can use to find what is going on (I suspect
something in JS but JS isn't my specialty) ?


Oh and both wicket-core and wicket-extension is 7.0.0.

Thanks,
Zbynek

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Sven Meier <sv...@meiers.net>.
Hi,

wicket-autocomplete.js surpresses the "change" event while you operate 
on the drop down.
When it decides that your selection has finished (e.g. the drop down is 
hidden), the "change" event is triggered subsequently.

The AjaxFormComponentUpdatingBehavior will pick up the "change" event 
and do an Ajax request as usual.

Hope this helps
Sven


On 21.01.2016 12:00, Zbynek Vavros wrote:
> I was soooo afraid of that :D
>
> Just out of curiosity, I see in wicket-autocomplete.js that the onchange
> event sets "triggerChangeOnHide" to true.
> How is this handled afterwards ? I mean how does it get from here to
> calling the ajax ?
>
> Thanks!
>
> On Thu, Jan 21, 2016 at 11:50 AM, Sven Meier <sv...@meiers.net> wrote:
>
>> Hi,
>>
>> well, it seems you'll have to strip down your business app until it works
>> as expected :P
>>
>> Have fun
>> Sven
>>
>>
>> On 21.01.2016 11:47, Zbynek Vavros wrote:
>>
>>> I'm not sure we understand each other.
>>> Such a behavior is already there using AjaxFormComponentUpdatingBehavior
>>> ("change").
>>> This way ajax is triggered ONLY when value is selected from choices
>>> (either
>>> by mouse or by keyboard).
>>> = exactly what I want.
>>>
>>> I tested this in small prototype and it works just fine.
>>>
>>> My issue is that this doesn't work in our business app so I am trying to
>>> find why this works in prototype app
>>> but not in business app (as I mentioned both use wicket-core and
>>> wicket-extensions 7.0.0).
>>>
>>> What I found out is that in both cases (prototype and business app)
>>> the event in line 178 in wicket-autocomplete.js is invoked as expected.
>>> The
>>> issue is that business app does no ajax call after that.
>>>
>>> To summarize all I would like is some help with JS debugging since I am
>>> java-dev and js-noob :(
>>>
>>> On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <mg...@apache.org>
>>> wrote:
>>>
>>> OK. I understand now.
>>>> Looking at wicket-autocomplete.js I see that it triggers "change" event
>>>> after click on an entry.
>>>> To support use cases like yours it has to trigger some custom event too,
>>>> e.g. "itemselected.wa" ("wa" is a sample namespace for
>>>> wicket-autocomplete). The you can use
>>>> AjaxFormComponentUpdatingBehavior("itemselected.wa").
>>>> Please create a ticket in our JIRA!
>>>>
>>>> Martin Grigorov
>>>> Wicket Training and Consulting
>>>> https://twitter.com/mtgrigorov
>>>>
>>>> On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
>>>> wrote:
>>>>
>>>> What I mean by final value is value selected from list of options.
>>>>> The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
>>>>> So lets say my autocomplete display list of cities.
>>>>> I want the method called when user selects a value "London" from list.
>>>>> Not on each stoke "L", "Lo", "Lon"...
>>>>>
>>>>> As I said, this is because I need to use the selected value for
>>>>>
>>>> additional
>>>>
>>>>> processing.
>>>>>
>>>>> On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
>>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>> How do you decide when "final" value is entered ?
>>>>>> You can use Ajax throttling to avoid sending requests on every typed
>>>>>> character but only after N ms after the last typed character. See
>>>>>> AjaxRequestAttributes#setThrottling() for this option.
>>>>>> There is no magic that will read your users' mind to tell whether an
>>>>>> entered value is final or not.
>>>>>>
>>>>>> Martin Grigorov
>>>>>> Wicket Training and Consulting
>>>>>> https://twitter.com/mtgrigorov
>>>>>>
>>>>>> On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zbynekvavros@gmail.com
>>>>>> wrote:
>>>>>>
>>>>>> Hey,
>>>>>>> sorry for not explaining properly...
>>>>>>> I already tried that and in this case the the ajax call is triggered
>>>>>>> on "inputchange" as well, meaning on every key stroke.
>>>>>>>
>>>>>>> This is not desirable because we use the value of this autocomplete
>>>>>>>
>>>>>> field
>>>>>> to calculate value of another fields in form. This calculation should
>>>>>>> happen only
>>>>>>> when "final" value is selected.
>>>>>>>
>>>>>>> Zbynek
>>>>>>>
>>>>>>> On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <
>>>>>>>
>>>>>> mgrigorov@apache.org
>>>>> wrote:
>>>>>>> Hi,
>>>>>>>> It is not very clear what exactly is the issue.
>>>>>>>> As far as I understand the problem is that the Ajax call is
>>>>>>>>
>>>>>>> triggered
>>>>> only
>>>>>>>> when you navigate to another form field. If this is the issue then
>>>>>>>>
>>>>>>> try
>>>>>> by
>>>>>>
>>>>>>> using OnChangeAjaxBehavior instead of
>>>>>>> AjaxFormComponentUpdatingBehavior.
>>>>>>> Martin Grigorov
>>>>>>>> Wicket Training and Consulting
>>>>>>>> https://twitter.com/mtgrigorov
>>>>>>>>
>>>>>>>> On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
>>>>>>>>
>>>>>>> zbynekvavros@gmail.com
>>>>>> wrote:
>>>>>>>> Hi,
>>>>>>>>> in our project we have an AutoCompleteTextField with
>>>>>>>>> AjaxFormComponentUpdatingBehavior ("change" event) attached.
>>>>>>>>>
>>>>>>>>> Small prototype I did proves that HTTP POST is done when an item
>>>>>>>>>
>>>>>>>> is
>>>>> selected from choices (either by mouse or keyboard). But for some
>>>>>>>> reason
>>>>>>>> the same code doesn't work in our project. It is required to move
>>>>>>>> focus
>>>>>>> to
>>>>>>>>> another component for the POST to be send. The behavior works
>>>>>>>>>
>>>>>>>> like
>>>>> if
>>>>>
>>>>>> "blur" type of event is set but there is "change".
>>>>>>>>> I'm quite new to Wicket so I tried to compare all HTML & JS files
>>>>>>>>>
>>>>>>>> but
>>>>>> they
>>>>>>>>> all seem to be the same.
>>>>>>>>> Is there some other debug I can use to find what is going on (I
>>>>>>>>>
>>>>>>>> suspect
>>>>>>> something in JS but JS isn't my specialty) ?
>>>>>>>>>
>>>>>>>>> Oh and both wicket-core and wicket-extension is 7.0.0.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Zbynek
>>>>>>>>>
>>>>>>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Zbynek Vavros <zb...@gmail.com>.
I was soooo afraid of that :D

Just out of curiosity, I see in wicket-autocomplete.js that the onchange
event sets "triggerChangeOnHide" to true.
How is this handled afterwards ? I mean how does it get from here to
calling the ajax ?

Thanks!

On Thu, Jan 21, 2016 at 11:50 AM, Sven Meier <sv...@meiers.net> wrote:

> Hi,
>
> well, it seems you'll have to strip down your business app until it works
> as expected :P
>
> Have fun
> Sven
>
>
> On 21.01.2016 11:47, Zbynek Vavros wrote:
>
>> I'm not sure we understand each other.
>> Such a behavior is already there using AjaxFormComponentUpdatingBehavior
>> ("change").
>> This way ajax is triggered ONLY when value is selected from choices
>> (either
>> by mouse or by keyboard).
>> = exactly what I want.
>>
>> I tested this in small prototype and it works just fine.
>>
>> My issue is that this doesn't work in our business app so I am trying to
>> find why this works in prototype app
>> but not in business app (as I mentioned both use wicket-core and
>> wicket-extensions 7.0.0).
>>
>> What I found out is that in both cases (prototype and business app)
>> the event in line 178 in wicket-autocomplete.js is invoked as expected.
>> The
>> issue is that business app does no ajax call after that.
>>
>> To summarize all I would like is some help with JS debugging since I am
>> java-dev and js-noob :(
>>
>> On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <mg...@apache.org>
>> wrote:
>>
>> OK. I understand now.
>>> Looking at wicket-autocomplete.js I see that it triggers "change" event
>>> after click on an entry.
>>> To support use cases like yours it has to trigger some custom event too,
>>> e.g. "itemselected.wa" ("wa" is a sample namespace for
>>> wicket-autocomplete). The you can use
>>> AjaxFormComponentUpdatingBehavior("itemselected.wa").
>>> Please create a ticket in our JIRA!
>>>
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
>>> wrote:
>>>
>>> What I mean by final value is value selected from list of options.
>>>> The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
>>>> So lets say my autocomplete display list of cities.
>>>> I want the method called when user selects a value "London" from list.
>>>> Not on each stoke "L", "Lo", "Lon"...
>>>>
>>>> As I said, this is because I need to use the selected value for
>>>>
>>> additional
>>>
>>>> processing.
>>>>
>>>> On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
>>>> wrote:
>>>>
>>>> Hi,
>>>>>
>>>>> How do you decide when "final" value is entered ?
>>>>> You can use Ajax throttling to avoid sending requests on every typed
>>>>> character but only after N ms after the last typed character. See
>>>>> AjaxRequestAttributes#setThrottling() for this option.
>>>>> There is no magic that will read your users' mind to tell whether an
>>>>> entered value is final or not.
>>>>>
>>>>> Martin Grigorov
>>>>> Wicket Training and Consulting
>>>>> https://twitter.com/mtgrigorov
>>>>>
>>>>> On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zbynekvavros@gmail.com
>>>>> wrote:
>>>>>
>>>>> Hey,
>>>>>>
>>>>>> sorry for not explaining properly...
>>>>>> I already tried that and in this case the the ajax call is triggered
>>>>>> on "inputchange" as well, meaning on every key stroke.
>>>>>>
>>>>>> This is not desirable because we use the value of this autocomplete
>>>>>>
>>>>> field
>>>>
>>>>> to calculate value of another fields in form. This calculation should
>>>>>> happen only
>>>>>> when "final" value is selected.
>>>>>>
>>>>>> Zbynek
>>>>>>
>>>>>> On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <
>>>>>>
>>>>> mgrigorov@apache.org
>>>
>>>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>>
>>>>>>> It is not very clear what exactly is the issue.
>>>>>>> As far as I understand the problem is that the Ajax call is
>>>>>>>
>>>>>> triggered
>>>
>>>> only
>>>>>>
>>>>>>> when you navigate to another form field. If this is the issue then
>>>>>>>
>>>>>> try
>>>>
>>>>> by
>>>>>
>>>>>> using OnChangeAjaxBehavior instead of
>>>>>>>
>>>>>> AjaxFormComponentUpdatingBehavior.
>>>>>
>>>>>> Martin Grigorov
>>>>>>> Wicket Training and Consulting
>>>>>>> https://twitter.com/mtgrigorov
>>>>>>>
>>>>>>> On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
>>>>>>>
>>>>>> zbynekvavros@gmail.com
>>>>
>>>>> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>>
>>>>>>>> in our project we have an AutoCompleteTextField with
>>>>>>>> AjaxFormComponentUpdatingBehavior ("change" event) attached.
>>>>>>>>
>>>>>>>> Small prototype I did proves that HTTP POST is done when an item
>>>>>>>>
>>>>>>> is
>>>
>>>> selected from choices (either by mouse or keyboard). But for some
>>>>>>>>
>>>>>>> reason
>>>>>>
>>>>>>> the same code doesn't work in our project. It is required to move
>>>>>>>>
>>>>>>> focus
>>>>>
>>>>>> to
>>>>>>>
>>>>>>>> another component for the POST to be send. The behavior works
>>>>>>>>
>>>>>>> like
>>>
>>>> if
>>>>
>>>>> "blur" type of event is set but there is "change".
>>>>>>>>
>>>>>>>> I'm quite new to Wicket so I tried to compare all HTML & JS files
>>>>>>>>
>>>>>>> but
>>>>
>>>>> they
>>>>>>>
>>>>>>>> all seem to be the same.
>>>>>>>> Is there some other debug I can use to find what is going on (I
>>>>>>>>
>>>>>>> suspect
>>>>>
>>>>>> something in JS but JS isn't my specialty) ?
>>>>>>>>
>>>>>>>>
>>>>>>>> Oh and both wicket-core and wicket-extension is 7.0.0.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Zbynek
>>>>>>>>
>>>>>>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Sven Meier <sv...@meiers.net>.
Hi,

well, it seems you'll have to strip down your business app until it 
works as expected :P

Have fun
Sven


On 21.01.2016 11:47, Zbynek Vavros wrote:
> I'm not sure we understand each other.
> Such a behavior is already there using AjaxFormComponentUpdatingBehavior
> ("change").
> This way ajax is triggered ONLY when value is selected from choices (either
> by mouse or by keyboard).
> = exactly what I want.
>
> I tested this in small prototype and it works just fine.
>
> My issue is that this doesn't work in our business app so I am trying to
> find why this works in prototype app
> but not in business app (as I mentioned both use wicket-core and
> wicket-extensions 7.0.0).
>
> What I found out is that in both cases (prototype and business app)
> the event in line 178 in wicket-autocomplete.js is invoked as expected. The
> issue is that business app does no ajax call after that.
>
> To summarize all I would like is some help with JS debugging since I am
> java-dev and js-noob :(
>
> On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
>> OK. I understand now.
>> Looking at wicket-autocomplete.js I see that it triggers "change" event
>> after click on an entry.
>> To support use cases like yours it has to trigger some custom event too,
>> e.g. "itemselected.wa" ("wa" is a sample namespace for
>> wicket-autocomplete). The you can use
>> AjaxFormComponentUpdatingBehavior("itemselected.wa").
>> Please create a ticket in our JIRA!
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
>> wrote:
>>
>>> What I mean by final value is value selected from list of options.
>>> The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
>>> So lets say my autocomplete display list of cities.
>>> I want the method called when user selects a value "London" from list.
>>> Not on each stoke "L", "Lo", "Lon"...
>>>
>>> As I said, this is because I need to use the selected value for
>> additional
>>> processing.
>>>
>>> On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> How do you decide when "final" value is entered ?
>>>> You can use Ajax throttling to avoid sending requests on every typed
>>>> character but only after N ms after the last typed character. See
>>>> AjaxRequestAttributes#setThrottling() for this option.
>>>> There is no magic that will read your users' mind to tell whether an
>>>> entered value is final or not.
>>>>
>>>> Martin Grigorov
>>>> Wicket Training and Consulting
>>>> https://twitter.com/mtgrigorov
>>>>
>>>> On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zbynekvavros@gmail.com
>>>> wrote:
>>>>
>>>>> Hey,
>>>>>
>>>>> sorry for not explaining properly...
>>>>> I already tried that and in this case the the ajax call is triggered
>>>>> on "inputchange" as well, meaning on every key stroke.
>>>>>
>>>>> This is not desirable because we use the value of this autocomplete
>>> field
>>>>> to calculate value of another fields in form. This calculation should
>>>>> happen only
>>>>> when "final" value is selected.
>>>>>
>>>>> Zbynek
>>>>>
>>>>> On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <
>> mgrigorov@apache.org
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> It is not very clear what exactly is the issue.
>>>>>> As far as I understand the problem is that the Ajax call is
>> triggered
>>>>> only
>>>>>> when you navigate to another form field. If this is the issue then
>>> try
>>>> by
>>>>>> using OnChangeAjaxBehavior instead of
>>>> AjaxFormComponentUpdatingBehavior.
>>>>>> Martin Grigorov
>>>>>> Wicket Training and Consulting
>>>>>> https://twitter.com/mtgrigorov
>>>>>>
>>>>>> On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
>>> zbynekvavros@gmail.com
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> in our project we have an AutoCompleteTextField with
>>>>>>> AjaxFormComponentUpdatingBehavior ("change" event) attached.
>>>>>>>
>>>>>>> Small prototype I did proves that HTTP POST is done when an item
>> is
>>>>>>> selected from choices (either by mouse or keyboard). But for some
>>>>> reason
>>>>>>> the same code doesn't work in our project. It is required to move
>>>> focus
>>>>>> to
>>>>>>> another component for the POST to be send. The behavior works
>> like
>>> if
>>>>>>> "blur" type of event is set but there is "change".
>>>>>>>
>>>>>>> I'm quite new to Wicket so I tried to compare all HTML & JS files
>>> but
>>>>>> they
>>>>>>> all seem to be the same.
>>>>>>> Is there some other debug I can use to find what is going on (I
>>>> suspect
>>>>>>> something in JS but JS isn't my specialty) ?
>>>>>>>
>>>>>>>
>>>>>>> Oh and both wicket-core and wicket-extension is 7.0.0.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Zbynek
>>>>>>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Martin Grigorov <mg...@apache.org>.
At the moment wicket-autocomplete.js triggers event with name "change":
https://github.com/apache/wicket/blob/580d92ddf068040214669c085f54d2faa702a921/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js#L446

This makes it hard for the application to know whether this is a normal
change event for the <input> or the manually triggered from selection from
the dropdown.

I am not sure how it works for the simple app. I have to try it to see what
happens.

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

On Thu, Jan 21, 2016 at 11:47 AM, Zbynek Vavros <zb...@gmail.com>
wrote:

> I'm not sure we understand each other.
> Such a behavior is already there using AjaxFormComponentUpdatingBehavior
> ("change").
> This way ajax is triggered ONLY when value is selected from choices (either
> by mouse or by keyboard).
> = exactly what I want.
>
> I tested this in small prototype and it works just fine.
>
> My issue is that this doesn't work in our business app so I am trying to
> find why this works in prototype app
> but not in business app (as I mentioned both use wicket-core and
> wicket-extensions 7.0.0).
>
> What I found out is that in both cases (prototype and business app)
> the event in line 178 in wicket-autocomplete.js is invoked as expected. The
> issue is that business app does no ajax call after that.
>
> To summarize all I would like is some help with JS debugging since I am
> java-dev and js-noob :(
>
> On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > OK. I understand now.
> > Looking at wicket-autocomplete.js I see that it triggers "change" event
> > after click on an entry.
> > To support use cases like yours it has to trigger some custom event too,
> > e.g. "itemselected.wa" ("wa" is a sample namespace for
> > wicket-autocomplete). The you can use
> > AjaxFormComponentUpdatingBehavior("itemselected.wa").
> > Please create a ticket in our JIRA!
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
> > wrote:
> >
> > > What I mean by final value is value selected from list of options.
> > > The OnChangeAjaxBehavior you suggested will do ajax on every key
> stroke.
> > > So lets say my autocomplete display list of cities.
> > > I want the method called when user selects a value "London" from list.
> > > Not on each stoke "L", "Lo", "Lon"...
> > >
> > > As I said, this is because I need to use the selected value for
> > additional
> > > processing.
> > >
> > > On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mgrigorov@apache.org
> >
> > > wrote:
> > >
> > > > Hi,
> > > >
> > > > How do you decide when "final" value is entered ?
> > > > You can use Ajax throttling to avoid sending requests on every typed
> > > > character but only after N ms after the last typed character. See
> > > > AjaxRequestAttributes#setThrottling() for this option.
> > > > There is no magic that will read your users' mind to tell whether an
> > > > entered value is final or not.
> > > >
> > > > Martin Grigorov
> > > > Wicket Training and Consulting
> > > > https://twitter.com/mtgrigorov
> > > >
> > > > On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <
> zbynekvavros@gmail.com
> > >
> > > > wrote:
> > > >
> > > > > Hey,
> > > > >
> > > > > sorry for not explaining properly...
> > > > > I already tried that and in this case the the ajax call is
> triggered
> > > > > on "inputchange" as well, meaning on every key stroke.
> > > > >
> > > > > This is not desirable because we use the value of this autocomplete
> > > field
> > > > > to calculate value of another fields in form. This calculation
> should
> > > > > happen only
> > > > > when "final" value is selected.
> > > > >
> > > > > Zbynek
> > > > >
> > > > > On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <
> > mgrigorov@apache.org
> > > >
> > > > > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > It is not very clear what exactly is the issue.
> > > > > > As far as I understand the problem is that the Ajax call is
> > triggered
> > > > > only
> > > > > > when you navigate to another form field. If this is the issue
> then
> > > try
> > > > by
> > > > > > using OnChangeAjaxBehavior instead of
> > > > AjaxFormComponentUpdatingBehavior.
> > > > > >
> > > > > > Martin Grigorov
> > > > > > Wicket Training and Consulting
> > > > > > https://twitter.com/mtgrigorov
> > > > > >
> > > > > > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
> > > zbynekvavros@gmail.com
> > > > >
> > > > > > wrote:
> > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > in our project we have an AutoCompleteTextField with
> > > > > > > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> > > > > > >
> > > > > > > Small prototype I did proves that HTTP POST is done when an
> item
> > is
> > > > > > > selected from choices (either by mouse or keyboard). But for
> some
> > > > > reason
> > > > > > > the same code doesn't work in our project. It is required to
> move
> > > > focus
> > > > > > to
> > > > > > > another component for the POST to be send. The behavior works
> > like
> > > if
> > > > > > > "blur" type of event is set but there is "change".
> > > > > > >
> > > > > > > I'm quite new to Wicket so I tried to compare all HTML & JS
> files
> > > but
> > > > > > they
> > > > > > > all seem to be the same.
> > > > > > > Is there some other debug I can use to find what is going on (I
> > > > suspect
> > > > > > > something in JS but JS isn't my specialty) ?
> > > > > > >
> > > > > > >
> > > > > > > Oh and both wicket-core and wicket-extension is 7.0.0.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Zbynek
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Zbynek Vavros <zb...@gmail.com>.
I'm not sure we understand each other.
Such a behavior is already there using AjaxFormComponentUpdatingBehavior
("change").
This way ajax is triggered ONLY when value is selected from choices (either
by mouse or by keyboard).
= exactly what I want.

I tested this in small prototype and it works just fine.

My issue is that this doesn't work in our business app so I am trying to
find why this works in prototype app
but not in business app (as I mentioned both use wicket-core and
wicket-extensions 7.0.0).

What I found out is that in both cases (prototype and business app)
the event in line 178 in wicket-autocomplete.js is invoked as expected. The
issue is that business app does no ajax call after that.

To summarize all I would like is some help with JS debugging since I am
java-dev and js-noob :(

On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <mg...@apache.org>
wrote:

> OK. I understand now.
> Looking at wicket-autocomplete.js I see that it triggers "change" event
> after click on an entry.
> To support use cases like yours it has to trigger some custom event too,
> e.g. "itemselected.wa" ("wa" is a sample namespace for
> wicket-autocomplete). The you can use
> AjaxFormComponentUpdatingBehavior("itemselected.wa").
> Please create a ticket in our JIRA!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
> wrote:
>
> > What I mean by final value is value selected from list of options.
> > The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
> > So lets say my autocomplete display list of cities.
> > I want the method called when user selects a value "London" from list.
> > Not on each stoke "L", "Lo", "Lon"...
> >
> > As I said, this is because I need to use the selected value for
> additional
> > processing.
> >
> > On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
> > wrote:
> >
> > > Hi,
> > >
> > > How do you decide when "final" value is entered ?
> > > You can use Ajax throttling to avoid sending requests on every typed
> > > character but only after N ms after the last typed character. See
> > > AjaxRequestAttributes#setThrottling() for this option.
> > > There is no magic that will read your users' mind to tell whether an
> > > entered value is final or not.
> > >
> > > Martin Grigorov
> > > Wicket Training and Consulting
> > > https://twitter.com/mtgrigorov
> > >
> > > On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zbynekvavros@gmail.com
> >
> > > wrote:
> > >
> > > > Hey,
> > > >
> > > > sorry for not explaining properly...
> > > > I already tried that and in this case the the ajax call is triggered
> > > > on "inputchange" as well, meaning on every key stroke.
> > > >
> > > > This is not desirable because we use the value of this autocomplete
> > field
> > > > to calculate value of another fields in form. This calculation should
> > > > happen only
> > > > when "final" value is selected.
> > > >
> > > > Zbynek
> > > >
> > > > On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <
> mgrigorov@apache.org
> > >
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > It is not very clear what exactly is the issue.
> > > > > As far as I understand the problem is that the Ajax call is
> triggered
> > > > only
> > > > > when you navigate to another form field. If this is the issue then
> > try
> > > by
> > > > > using OnChangeAjaxBehavior instead of
> > > AjaxFormComponentUpdatingBehavior.
> > > > >
> > > > > Martin Grigorov
> > > > > Wicket Training and Consulting
> > > > > https://twitter.com/mtgrigorov
> > > > >
> > > > > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
> > zbynekvavros@gmail.com
> > > >
> > > > > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > in our project we have an AutoCompleteTextField with
> > > > > > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> > > > > >
> > > > > > Small prototype I did proves that HTTP POST is done when an item
> is
> > > > > > selected from choices (either by mouse or keyboard). But for some
> > > > reason
> > > > > > the same code doesn't work in our project. It is required to move
> > > focus
> > > > > to
> > > > > > another component for the POST to be send. The behavior works
> like
> > if
> > > > > > "blur" type of event is set but there is "change".
> > > > > >
> > > > > > I'm quite new to Wicket so I tried to compare all HTML & JS files
> > but
> > > > > they
> > > > > > all seem to be the same.
> > > > > > Is there some other debug I can use to find what is going on (I
> > > suspect
> > > > > > something in JS but JS isn't my specialty) ?
> > > > > >
> > > > > >
> > > > > > Oh and both wicket-core and wicket-extension is 7.0.0.
> > > > > >
> > > > > > Thanks,
> > > > > > Zbynek
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Martin Grigorov <mg...@apache.org>.
OK. I understand now.
Looking at wicket-autocomplete.js I see that it triggers "change" event
after click on an entry.
To support use cases like yours it has to trigger some custom event too,
e.g. "itemselected.wa" ("wa" is a sample namespace for
wicket-autocomplete). The you can use
AjaxFormComponentUpdatingBehavior("itemselected.wa").
Please create a ticket in our JIRA!

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

On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <zb...@gmail.com>
wrote:

> What I mean by final value is value selected from list of options.
> The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
> So lets say my autocomplete display list of cities.
> I want the method called when user selects a value "London" from list.
> Not on each stoke "L", "Lo", "Lon"...
>
> As I said, this is because I need to use the selected value for additional
> processing.
>
> On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Hi,
> >
> > How do you decide when "final" value is entered ?
> > You can use Ajax throttling to avoid sending requests on every typed
> > character but only after N ms after the last typed character. See
> > AjaxRequestAttributes#setThrottling() for this option.
> > There is no magic that will read your users' mind to tell whether an
> > entered value is final or not.
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zb...@gmail.com>
> > wrote:
> >
> > > Hey,
> > >
> > > sorry for not explaining properly...
> > > I already tried that and in this case the the ajax call is triggered
> > > on "inputchange" as well, meaning on every key stroke.
> > >
> > > This is not desirable because we use the value of this autocomplete
> field
> > > to calculate value of another fields in form. This calculation should
> > > happen only
> > > when "final" value is selected.
> > >
> > > Zbynek
> > >
> > > On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <mgrigorov@apache.org
> >
> > > wrote:
> > >
> > > > Hi,
> > > >
> > > > It is not very clear what exactly is the issue.
> > > > As far as I understand the problem is that the Ajax call is triggered
> > > only
> > > > when you navigate to another form field. If this is the issue then
> try
> > by
> > > > using OnChangeAjaxBehavior instead of
> > AjaxFormComponentUpdatingBehavior.
> > > >
> > > > Martin Grigorov
> > > > Wicket Training and Consulting
> > > > https://twitter.com/mtgrigorov
> > > >
> > > > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <
> zbynekvavros@gmail.com
> > >
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > in our project we have an AutoCompleteTextField with
> > > > > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> > > > >
> > > > > Small prototype I did proves that HTTP POST is done when an item is
> > > > > selected from choices (either by mouse or keyboard). But for some
> > > reason
> > > > > the same code doesn't work in our project. It is required to move
> > focus
> > > > to
> > > > > another component for the POST to be send. The behavior works like
> if
> > > > > "blur" type of event is set but there is "change".
> > > > >
> > > > > I'm quite new to Wicket so I tried to compare all HTML & JS files
> but
> > > > they
> > > > > all seem to be the same.
> > > > > Is there some other debug I can use to find what is going on (I
> > suspect
> > > > > something in JS but JS isn't my specialty) ?
> > > > >
> > > > >
> > > > > Oh and both wicket-core and wicket-extension is 7.0.0.
> > > > >
> > > > > Thanks,
> > > > > Zbynek
> > > > >
> > > >
> > >
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Zbynek Vavros <zb...@gmail.com>.
What I mean by final value is value selected from list of options.
The OnChangeAjaxBehavior you suggested will do ajax on every key stroke.
So lets say my autocomplete display list of cities.
I want the method called when user selects a value "London" from list.
Not on each stoke "L", "Lo", "Lon"...

As I said, this is because I need to use the selected value for additional
processing.

On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <mg...@apache.org>
wrote:

> Hi,
>
> How do you decide when "final" value is entered ?
> You can use Ajax throttling to avoid sending requests on every typed
> character but only after N ms after the last typed character. See
> AjaxRequestAttributes#setThrottling() for this option.
> There is no magic that will read your users' mind to tell whether an
> entered value is final or not.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zb...@gmail.com>
> wrote:
>
> > Hey,
> >
> > sorry for not explaining properly...
> > I already tried that and in this case the the ajax call is triggered
> > on "inputchange" as well, meaning on every key stroke.
> >
> > This is not desirable because we use the value of this autocomplete field
> > to calculate value of another fields in form. This calculation should
> > happen only
> > when "final" value is selected.
> >
> > Zbynek
> >
> > On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <mg...@apache.org>
> > wrote:
> >
> > > Hi,
> > >
> > > It is not very clear what exactly is the issue.
> > > As far as I understand the problem is that the Ajax call is triggered
> > only
> > > when you navigate to another form field. If this is the issue then try
> by
> > > using OnChangeAjaxBehavior instead of
> AjaxFormComponentUpdatingBehavior.
> > >
> > > Martin Grigorov
> > > Wicket Training and Consulting
> > > https://twitter.com/mtgrigorov
> > >
> > > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <zbynekvavros@gmail.com
> >
> > > wrote:
> > >
> > > > Hi,
> > > >
> > > > in our project we have an AutoCompleteTextField with
> > > > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> > > >
> > > > Small prototype I did proves that HTTP POST is done when an item is
> > > > selected from choices (either by mouse or keyboard). But for some
> > reason
> > > > the same code doesn't work in our project. It is required to move
> focus
> > > to
> > > > another component for the POST to be send. The behavior works like if
> > > > "blur" type of event is set but there is "change".
> > > >
> > > > I'm quite new to Wicket so I tried to compare all HTML & JS files but
> > > they
> > > > all seem to be the same.
> > > > Is there some other debug I can use to find what is going on (I
> suspect
> > > > something in JS but JS isn't my specialty) ?
> > > >
> > > >
> > > > Oh and both wicket-core and wicket-extension is 7.0.0.
> > > >
> > > > Thanks,
> > > > Zbynek
> > > >
> > >
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

How do you decide when "final" value is entered ?
You can use Ajax throttling to avoid sending requests on every typed
character but only after N ms after the last typed character. See
AjaxRequestAttributes#setThrottling() for this option.
There is no magic that will read your users' mind to tell whether an
entered value is final or not.

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

On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros <zb...@gmail.com>
wrote:

> Hey,
>
> sorry for not explaining properly...
> I already tried that and in this case the the ajax call is triggered
> on "inputchange" as well, meaning on every key stroke.
>
> This is not desirable because we use the value of this autocomplete field
> to calculate value of another fields in form. This calculation should
> happen only
> when "final" value is selected.
>
> Zbynek
>
> On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Hi,
> >
> > It is not very clear what exactly is the issue.
> > As far as I understand the problem is that the Ajax call is triggered
> only
> > when you navigate to another form field. If this is the issue then try by
> > using OnChangeAjaxBehavior instead of AjaxFormComponentUpdatingBehavior.
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <zb...@gmail.com>
> > wrote:
> >
> > > Hi,
> > >
> > > in our project we have an AutoCompleteTextField with
> > > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> > >
> > > Small prototype I did proves that HTTP POST is done when an item is
> > > selected from choices (either by mouse or keyboard). But for some
> reason
> > > the same code doesn't work in our project. It is required to move focus
> > to
> > > another component for the POST to be send. The behavior works like if
> > > "blur" type of event is set but there is "change".
> > >
> > > I'm quite new to Wicket so I tried to compare all HTML & JS files but
> > they
> > > all seem to be the same.
> > > Is there some other debug I can use to find what is going on (I suspect
> > > something in JS but JS isn't my specialty) ?
> > >
> > >
> > > Oh and both wicket-core and wicket-extension is 7.0.0.
> > >
> > > Thanks,
> > > Zbynek
> > >
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Zbynek Vavros <zb...@gmail.com>.
Hey,

sorry for not explaining properly...
I already tried that and in this case the the ajax call is triggered
on "inputchange" as well, meaning on every key stroke.

This is not desirable because we use the value of this autocomplete field
to calculate value of another fields in form. This calculation should
happen only
when "final" value is selected.

Zbynek

On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov <mg...@apache.org>
wrote:

> Hi,
>
> It is not very clear what exactly is the issue.
> As far as I understand the problem is that the Ajax call is triggered only
> when you navigate to another form field. If this is the issue then try by
> using OnChangeAjaxBehavior instead of AjaxFormComponentUpdatingBehavior.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <zb...@gmail.com>
> wrote:
>
> > Hi,
> >
> > in our project we have an AutoCompleteTextField with
> > AjaxFormComponentUpdatingBehavior ("change" event) attached.
> >
> > Small prototype I did proves that HTTP POST is done when an item is
> > selected from choices (either by mouse or keyboard). But for some reason
> > the same code doesn't work in our project. It is required to move focus
> to
> > another component for the POST to be send. The behavior works like if
> > "blur" type of event is set but there is "change".
> >
> > I'm quite new to Wicket so I tried to compare all HTML & JS files but
> they
> > all seem to be the same.
> > Is there some other debug I can use to find what is going on (I suspect
> > something in JS but JS isn't my specialty) ?
> >
> >
> > Oh and both wicket-core and wicket-extension is 7.0.0.
> >
> > Thanks,
> > Zbynek
> >
>

Re: AutoCompleteTextField and change AjaxFormComponentUpdatingBehavior

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

It is not very clear what exactly is the issue.
As far as I understand the problem is that the Ajax call is triggered only
when you navigate to another form field. If this is the issue then try by
using OnChangeAjaxBehavior instead of AjaxFormComponentUpdatingBehavior.

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

On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros <zb...@gmail.com>
wrote:

> Hi,
>
> in our project we have an AutoCompleteTextField with
> AjaxFormComponentUpdatingBehavior ("change" event) attached.
>
> Small prototype I did proves that HTTP POST is done when an item is
> selected from choices (either by mouse or keyboard). But for some reason
> the same code doesn't work in our project. It is required to move focus to
> another component for the POST to be send. The behavior works like if
> "blur" type of event is set but there is "change".
>
> I'm quite new to Wicket so I tried to compare all HTML & JS files but they
> all seem to be the same.
> Is there some other debug I can use to find what is going on (I suspect
> something in JS but JS isn't my specialty) ?
>
>
> Oh and both wicket-core and wicket-extension is 7.0.0.
>
> Thanks,
> Zbynek
>