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

Alex Grant commented on WICKET-2933:
------------------------------------

Sorry about the delay in responding.

I added the following code to HomePage.java, overriding the newForm method in 
Wizard

            @Override
            protected <E> Form<E> newForm(String id) {
                return new Form<E>(id) {
                    @Override
                    protected void onSubmit() {
                        // Note only the outer form knows its submitted button, 
the inner form has no idea.
                        if (form.findSubmittingButton() == null) {
                            throw new RuntimeException("Form submitted, but no 
button detected.");
                        }
                    }
                };
            }

My StepTwo has this in the outer form (note the enctype attribute)

<form wicket:id="form" id="form9" method="post" 
action="?wicket:interface=:2:form::IFormSubmitListener::" 
enctype="multipart/form-data">

I got the 1.0-SNAPSHOT from the repository by adding 
http://wicketstuff.org/maven/repository to my pom.xml, so it I don't know if 
it's the exact same snapshot you're using.

> 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, wicket-2933.tar.gz
>
>
> 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