OK. I see what happens.
At 
org.apache.wicket.markup.html.form.Form#onFormSubmitted(org.apache.wicket.markup.html.form.IFormSubmitter)
Wicket calls #inputChanged() for the root form, so this calls
#inputChanged() on *all* FormComponents (including nested ones).
My first reaction is: this is a bug!
But then ... the purpose of the rawInput is to preserve the data entered by
the user. So if your #onSubmit() logic in the nested form / submitter
repaints the form components in the root/parent form then their data would
be lost and the user will have to re-type it again.

It seems in both cases the application developer will have to do something:
1) either clear the input manually (as now)
2) or update it manually when needed (by calling #inputChanged() only on
the FormComponents in the rootForm).

IMO the current behavior is wrong.

Please create a bug with a quickstart.

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

On Fri, Nov 20, 2015 at 3:51 PM, Patrick Davids <
[email protected]> wrote:

> Hi Martin,
> this is true for my DropDownChoice2.
> But DropDownChoice1 does not get validated.
> So, this could be the reason why it is not cleared.
>
> Now... I'm getting more and more confused... *lol*
>
>
> Page
>         Form A
>                 DropDownChoice1 displaying selected 'Car 1'
>                 Form B
>                         DropDownChoice2 displaying selected 'Car 1'
>
> Patrick
>
>
>
> Am 20.11.2015 um 15:32 schrieb Martin Grigorov:
>
>> Hi,
>>
>> On Fri, Nov 20, 2015 at 3:22 PM, Patrick Davids <
>> [email protected]> wrote:
>>
>> Hi Sven,
>>>
>>> using clearInput() works.
>>> I call it in onConfigure() of my DropDownChoice.
>>>
>>> Ok, so far... but I'm still confused about the raw-input-handling.
>>>
>>> Ususally, (and thats what I have in mind): components reflect the current
>>> model objects state.
>>>
>>> Whats the reason saving the raw-input and determining the selected value
>>> by raw-input and not by the model-objects value?
>>>
>>>
>> Wicket clears the rawInput
>> at org.apache.wicket.markup.html.form.FormComponent#valid().
>> FormComponent#valid() is called if the validation and conversion pass
>> successfully.
>> You can put a breakpoint and see what happens.
>>
>>
>>
>>> kind regards
>>> Patrick
>>>
>>>
>>> Am 19.11.2015 um 16:43 schrieb Sven Meier:
>>>
>>> Hi Patrick,
>>>>
>>>> so you have two components using the same model? Interesting.
>>>>
>>>> Easiest solution would be to clear the rawInput on DropDownChoice1:
>>>>
>>>>     choice1.clearInput();
>>>>
>>>> If you don't have access to the dropDown from your submitting code, you
>>>> might use component events to signal the car selection:
>>>>
>>>> (Wicket events infrastructure)
>>>>
>>>>
>>>> https://ci.apache.org/projects/wicket/guide/6.x/guide/advanced.html#advanced_2
>>>>
>>>>
>>>> Have fun
>>>> Sven
>>>>
>>>>
>>>> On 19.11.2015 13:40, Patrick Davids wrote:
>>>>
>>>> Hi Wicket Pros,
>>>>>
>>>>> I have a quite special case here and a question concerning nested form
>>>>> submits and FormComponent/Raw-Input Handling.
>>>>>
>>>>> This is my component tree:
>>>>>
>>>>> Page
>>>>>       Form A
>>>>>           DropDownChoice1 displaying selected 'Car 1'
>>>>>           Form B
>>>>>               DropDownChoice2 displaying selected 'Car 1'
>>>>>
>>>>> The model-binding of both DropDownChoices pointing to the same member
>>>>> of
>>>>> the model-object of the page.
>>>>>
>>>>> This is my case and code flow:
>>>>> - Someone uses DropDownChoice2 of Form B and changes the value to 'Car
>>>>> 2'
>>>>> - Form B does a form submit
>>>>> - Method onFormSubmitted(IFormSubmitter submitter) of Form A is also
>>>>> called
>>>>> - which calls inputChanged() of the DropDownChoice1 (by visiting /
>>>>> iteration)
>>>>> - so DropDownChoice1.inputChanged() reads and sets its rawInput to the
>>>>> current displayed value 'Car 1'
>>>>> - after form submit is done, an ajax refresh updates Form A
>>>>> - DropDownChoice1 re-renders an runs through its appendOptionHtml()
>>>>> - this reads getValue(), returning 'Car 1' from its previously saved
>>>>> rawInput
>>>>> - after the ajax refresh is finished, Form A shows the old selected
>>>>> 'Car
>>>>> 1' instead of 'Car 2'
>>>>>
>>>>> Model-Object updates are working fine... but DropDownChoice1 does not
>>>>> reflect it correct, due to the raw-input-handling.
>>>>>
>>>>> Can someone help here, please?
>>>>>
>>>>> Thanx a lot
>>>>> kind regards
>>>>> Patrick
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>>

Reply via email to