Hi Matej,

Thanks for the answer.

I have an AjaxSubmitLink both for opening and closing the modal window.
Should that make any trouble?
In both cases i have data to persist, so it must be a .*Submit.* component.

Also, my problem happens when closing the window, not when opening it.
I summarize it again:
-the browser sends an ajax call with the values in the modal window
-but on wicket side the main form of the page is the one that takes charge
-the components on the page then receive the new input, but there's actually
nothing coming from the browser for them
-some components (text components) handle it well, some not (checkbox,
dropdownchoice).
-the misbehaving component get a rawinput of null instead of NO_RAW_INPUT,
which then produces the side effect that the component does not get the
value from the model on rendering.

Please see the doubts section at the end of the original e-mail.

Thanks again,

German

2008/9/9 Matej Knopp <[EMAIL PROTECTED]>

> The link that shows the modal window must be AjaxButton/SubmitLink.
>
> -Matej
>
> On Tue, Sep 9, 2008 at 11:20 PM, German Morales
> <[EMAIL PROTECTED]> wrote:
> > Hi all,
> >
> > I've a problem with Forms and ModalWindows.
> >
> > I have this stuff:
> > -a page with a main Form (the only one that is rendered as an HTML form
> tag)
> > -this my only page, since all inside it is changed by replacing panels
> using
> > ajax.
> > -inside some other levels of panels, i have a panel with my content (let
> me
> > call it myContentPanel), which has its own (sub) Form (which is rendered
> as
> > a div).
> > -myContentPanel has some controls... TextFields, DropDownChoices,
> > CheckBoxes.
> > -myContentPanel has also a link that opens a ModalWindow.
> > -the ModalWindow has its own Form with components, and an AjaxSubmitLink
> to
> > close it.
> >
> > Now the problem...
> > 1- I enter to myContentPanel and enter some values in the components.
> > 2- I press the link to open the ModalWindow.
> > 3- I work with the ModalWindow, then press an AjaxSubmitLink to close it.
> > 4- When refreshing myContentPanel, the values in some controls is lost:
> > CheckBoxes, DropDownChoices, but NOT in TextFields.
> >
> > After some investigation, this is what i've discovered:
> > -on step 3 (accept and close the ModalWindow), the AjaxSubmitLink calls
> > (javascript) wicketSubmitFormById passing the ModalWindow's form as
> > parameter.
> > -this processes the ModalWindow's form and prepares the values to be sent
> to
> > wicket side.
> > -but when i see the url, it mentions that the form that will be used for
> the
> > HTTP request is the page's form (because it's the only real form, i think
> > this is normal).
> > -on wicket side, the request processing calls Form#onFormSubmitted, which
> > calls #inputChanged, which calls a visitor visiting all components... in
> the
> > main form!
> > -this ends up calling FormComponent#inputChanged on the CheckBoxes,
> > DropDownChoices, TextFields that where in myContentPanel (also for the
> > controls in the ModalWindow, but that's no surprise).
> > -given that the javascript only prepared the data for the ModalWindow's
> > form, the values for the components in myContentPanel is empty.
> > -looking deeper in #inputChanged, getInputAsArray() gives null for the
> > components in myContentPanel.
> > -then, since CheckBox and DropDownChoice answer true to isInputNullable()
> > (default in FormComponent), the rawInput is set to null, even if i didn't
> > touch the CheckBoxes/DropDownChoices at all in this call (then losing the
> > previous value: NO_RAW_INPUT).
> > -on step 4, when the CheckBox/DropDownChoice wants to get rendered again,
> > onComponentTag calls FormComponent#getValue, which if
> > (NO_RAW_INPUT.equals(rawInput)) uses the Model to get the value (what i
> > would expect), but in my case returns the rawInput (null... ouch).
> >
> > I have fixed it temporaly by overriding isInputNullable in my
> > CheckBoxes/DropDownChoice, but i understand that this is not a very good
> > solution.
> >
> > Some doubts that remain:
> > -is there anything wrong with my structure of forms and panels, which is
> > actually producing these side effects?
> > -if only the values for ModalWindow form are sent to the server, why the
> is
> > onFormSubmitted called on the main page form?
> > -the javadoc in isInputNullable is not very clear for me... do i break
> > something else if i override isInputNullable answering false?
> >
> > Thanks in advance,
> >
> > German
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to