I see what happens.

In Form#onFormSubmitted there is:

if (submitter == null)
{
submitter = findSubmittingButton();
}

i.e. it will always see AFSB's anonymous IFormSubmitter as submitter and
wont ever know that AjaxSubmitLink is the real submitter behind.

I think this is the broken code.
I'm not sure how important is to know that a link is the actual submitter
though. AFSB's anonymous IFormSubmitter will delegate to the link anyway.

On Wed, Jan 30, 2013 at 10:13 AM, Sven Meier <[email protected]> wrote:

> The AFSB knows that it is triggered, because it is directly triggered as a
> behavior listener.
> For that it doesn't need the extra parameter.
>
> My concern is that Form#findSubmittingButton() is inconsistent between
> runtime and tests.
> Before digging into WicketTester I'd rather remove that paramter in ARA.
>
> Sven
>
>
>
> On 01/30/2013 09:27 AM, Martin Grigorov wrote:
>
>> It is used indirectly by AjaxSubmitLink and AjaxButton, for example.
>> They use AFSB. After submit the form (and the client code) know that a
>> link/button actually submitted the form.
>>
>> Or maybe I don't understand your concern.
>>
>>
>> On Wed, Jan 30, 2013 at 9:19 AM, Sven Meier <[email protected]> wrote:
>>
>>  I know, but for what is that needed?
>>>
>>> Sven
>>>
>>>
>>> On 01/30/2013 09:09 AM, Martin Grigorov wrote:
>>>
>>>  Hi Sven,
>>>>
>>>> AFSB sets it only if :
>>>>
>>>>     if (getComponent() instanceof IFormSubmittingComponent)
>>>>     {
>>>>     String submittingComponentName =
>>>> ((IFormSubmittingComponent)****getComponent()).getInputName()****;
>>>>     attributes.****setSubmittingComponentName(****
>>>> submittingComponentName);
>>>>
>>>>     }
>>>>
>>>> i.e. if it is attached to a submitting component like a button.
>>>>
>>>> It is the same in 1.5
>>>> (org.apache.wicket.ajax.form.****AjaxFormSubmitBehavior#****
>>>> getEventHandler):
>>>>
>>>>
>>>>     if (getComponent() instanceof IFormSubmittingComponent)
>>>>     {
>>>>     call.append("'")
>>>>     .append(((****IFormSubmittingComponent)****
>>>> getComponent()).getInputName()***
>>>>
>>>> *)
>>>>     .append("' ");
>>>>     }
>>>>
>>>>
>>>>
>>>> On Tue, Jan 29, 2013 at 11:37 PM, Sven Meier <[email protected]> wrote:
>>>>
>>>>   Hi,
>>>>
>>>>> can somebody explain what AjaxRequestAttributes#****
>>>>> setSubmittingComponentName()
>>>>> is for?
>>>>> It is set by AjaxFormSubmitBehavior#******updateAjaxAttributes() only.
>>>>>
>>>>>
>>>>>
>>>>> Why I'm asking?
>>>>> When a form is submitted by an AjaxFormSubmitBehavior, we have an
>>>>> inconsistency between WicketTester and a real submit from the browser:
>>>>> In the former case Form#findSubmittingButton() returns null, in the
>>>>> latter
>>>>> case it returns the Button the AjaxFormSubmitBehavior is bound to.
>>>>>
>>>>> It seems that #setSubmittingComponentName() is superfluous because the
>>>>> AjaxFormSubmitBehavior will be triggered as the form submitter anyway.
>>>>> Strictly speaking the button is *not* the form submitter but the
>>>>> behavior
>>>>> is, so it makes sense that #findSubmittingButton() should return null.
>>>>>
>>>>> Any thoughts?
>>>>>
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>
>>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>

Reply via email to