[ 
https://issues.apache.org/jira/browse/WICKET-1090?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12536516
 ] 

Eelco Hillenius commented on WICKET-1090:
-----------------------------------------

What exactly is that reason then? Why should we hold on to invalid user input? 
The only case I can imagine is where you want to go to an intermediate page 
after submitting non-validated input and then go back again and display those 
same inputs (including the wrong ones) instead of the model values. The price 
for supporting this use case is the use case I described above, where any 
arbitrary error in a form submission blocks updating via Ajax of any of the 
form components in that form. The workaround is to manually clear the input of 
each of these form components, which is simply horrible.

If you weigh the two use cases against each other, I not only believe mine is 
stronger, but I also believe that the first one is a hack we don't have to 
support in the first place. The work around is straightforward: either don't 
allow navigation to the intermediate screen when there are validation errors 
(like we do in teachscape btw), or use an model that can be updated even with 
'wrong' values (e.g. use strings and do conversion later).

Please share any real use cases this fix broke for you. The case I outlined in 
this issue is a real one for me.

See also my reply on this thread 
http://www.nabble.com/Re%3A--jira--Resolved%3A-%28WICKET-1090%29-clean-up-raw_input-after-rendering-of-form-components-tf4657921.html



> clean up raw_input after rendering of form components
> -----------------------------------------------------
>
>                 Key: WICKET-1090
>                 URL: https://issues.apache.org/jira/browse/WICKET-1090
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 1.3.0-beta1, 1.3.0-beta2, 1.3.0-beta3, 1.3.0-beta4
>            Reporter: Eelco Hillenius
>            Assignee: Eelco Hillenius
>             Fix For: 1.3.0-beta5
>
>
> This code doesn't work like it should:
>   super("createUserForm", new CompoundPropertyModel(bean));
>   final TextField passwordField = new TextField("password");
>   passwordField.setOutputMarkupId(true);
>   passwordField.setLabel(new ResourceModel("label.createuser.password"));
>   add(passwordField);
>   add(new AjaxLink("generatePasswordLink") {
>     @Override
>     public void onClick(AjaxRequestTarget target) {
>       bean.setPassword(PasswordGenerator.generate().toString());
>       target.addComponent(passwordField);
>     }
>   });
> It should update the label with the new password, but it doesn't when done 
> after a form submit since it still has the raw_input value it got from that 
> last form submit. There is no reason (as far as I know) to hold on to that 
> value after rendering, so the fix is to clean the raw_input at the end of 
> requests (i.e. onAfterRender).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to