[ 
https://issues.apache.org/jira/browse/WICKET-2933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12885301#action_12885301
 ] 

Martin Grigorov commented on WICKET-2933:
-----------------------------------------

If I understand correctly you want to submit either of the forms at any time 
and both of them have to know what is the current multiPart state.
If this is the case then the following patch in your app code should be enough:


--- src/main/java/bugs/HomePage.java    2010-07-05 20:46:02.126710839 +0200
+++ src/main/java/bugs/HomePage.java.new        2010-07-05 20:46:36.638708382 
+0200
@@ -16,7 +16,7 @@
 public class HomePage extends WebPage {
 
     public HomePage() {
-        Form<?> form = new Form("form");
+        final Form<?> form = new Form("form");
         add(form);
 
         WizardModel wizardModel = new WizardModel();
@@ -35,7 +35,9 @@
 
             @Override
             public void onActiveStepChanged(IWizardStep newStep) {
-                getForm().setMultiPart(getChildOfType((WizardStep) newStep, 
FileUploadField.class) != null);
+               boolean isMulti = getChildOfType((WizardStep) newStep, 
FileUploadField.class) != null;
+               getForm().setMultiPart(isMulti);
+               form.setMultiPart(isMulti);
                 super.onActiveStepChanged(newStep);
             }
         };

i.e. update 'multiPart' for both forms.

> Form.MULTIPART_HINT is not cleared correctly with nested forms
> --------------------------------------------------------------
>
>                 Key: WICKET-2933
>                 URL: https://issues.apache.org/jira/browse/WICKET-2933
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.9
>            Reporter: Alex Grant
>         Attachments: WICKET-2933-quickstart.zip
>
>
> I have a page that looks like this
> * Page
> ** Form
> *** Wizard (contains another Form)
> **** StepOne - contains a FileUploadField
> **** StepTwo - has no FileUploadField
> (The outer form is there because I have some controls outside the wizard that 
> needed to submit the wizard too).
> Because I have been using Ajax ModalDialogs, it has been important to get 
> Form.multipart set correctly (otherwise they don't submit back correctly). So 
> I override Wizard.onActiveStepChanged and checked to see if the new wizard 
> step contained a FileUploadField, and set Form.setMultiPart accordingly. 
> However, this only clears Form.MULTIPART_HARD, Form.MULTIPART_HINT is left 
> untouched.
> When I step from StepOne to StepTwo, the inner form still has MULTIPART_HINT 
> set as it contained a FileUploadField last render. Then the outer form's 
> onRender fires, which clears MULTIPART_HINT, then the outer form's 
> onComponentTag fires. When it checks isMultiPart(), it evaluates to true as 
> the nested Form still returns true from its MULTIPART_HINT, and therefore 
> tag.put("enctype", "multipart/form-data"); is executed. After that, the inner 
> form's onRender fires which clears its MULTIPART_HINT.
> When I try to submit StepTwo, the html has enctype="multipart/form-data", so 
> it does a multipart submit. But wicket is not expecting a multipart submit so 
> it doesn't find any of the submitted form data, and cannot determine which 
> button is pressed, and loses all the form content.

-- 
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