Just to show you one of the thing your fix broke:
Go to the form input applicaiton.
Enter invalid input in some fields.
Submit form.
Refresh page.

your input is gone. Now as an user for such app this behavior would
really piss me of. As for the original problem, I believe the proper
solution is to call modelChanged() when you need to set value on field
with intermediate input. Is it such a big deal? Heck, you can even put
it to visitor. Or we could have such method in form that invokes this
on all children. It would be 5 lines of code and it wouldn't break
every wicket application out there.

-Matej

On 10/21/07, Matej Knopp <[EMAIL PROTECTED]> wrote:
> On 10/21/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote:
> > On 10/21/07, Matej Knopp <[EMAIL PROTECTED]> wrote:
> > > Hold on, the raw input _must_ be preserved after rendering. Where else
> > > would we keep invalid input?
> >
> > Why do we need to keep invalid input after rendering? Any such input
> > is already consumed for feedback messages, and the renders should
> > either render their model values if they did not get new input, or
> > render *new* input that may have been submitted.
> And what happens on page refresh? You just lose user input?
> >
> > > The code also doesn't make sense - there
> > > is no reason why it shouldn't work, except when the page was submitted
> > > before the render and the submit was not validated.
> >
> > But that is exactly my problem! So any form submit that doesn't
> > validate subsequently holds back updating of any of the form
> > components via Ajax like my example does, because the inputs aren't
> > cleared (whether they are valid or not).
> >
> > > Am I missing something?
> >
> > Am I? What are the disadvantages of my fix exactly? I think the
> > per-request scope is just right, and anything that should be persisted
> > over multiple requests should be done via model updates.
> How comes? We have this behaviors since 1.1 and suddenly is wrong?
> There are lot of cases when you have only part of form that is valid
> input and need you to persist it during requests. I have a lot of
> intermediate browse pages and all browse dialogs are done with button
> that has setDefaultFormProcessing(false). Now your change just
> silently broke all those dialogs.
> >
> > Eelco
> >
>

Reply via email to