{info}This page should serve as a *"specification"* (aka nominal state, not the current state) on nested form handling.
Please review the various situations and correct any mistakes or add new situations if necessary.
Thanks, Gerolf
{info}

{code:title=Markup}
<form wicket:id="outer">
  <form wicket:id="middle">
    <form wicket:id="inner">
    </form>
  </form>
</form>
{code}

{panel:title=Legend}
form...enabled
-form-...disabled

*form*...submitted form with no errors
_form_...form with errors

E...onError called
S...onSubmit called
_...nothing called, but input is preserved
{panel}

{info:title=Notice}
When submitting a nested form, the _entire_ <form> is submitted (including fileuploads), but processed according to the rules below.
{info}

{div:style=border:1px solid;}
all forms enabled
outer form submitted
|*Outer*|Middle|Inner|
|S|S|S|
{div}
{div:style=border:1px solid;}
all forms enabled
middle form submitted
|Outer|*Middle*|Inner|
|_|S|S|
{div}
{div:style=border:1px solid;}
all forms enabled
inner form submitted
|Outer|Middle|*Inner*|
|_|_|S|
{div}
{div:style=border:1px solid;}
middle form disabled
outer form submitted
|*Outer*|-Middle-|Inner|
|S|_|_|
{div}
{div:style=border:1px solid;}
inner form disabled
outer form submitted
|*Outer*|Middle|-Inner-|
|S|S|_|
{div}
{div:style=border:1px solid;}
outer form disabled
outer form submitted
|*-Outer-*|Middle|Inner|
|_|_|_|
{div}
{div:style=border:1px solid;}
all forms enabled
middle form has error
outer form submitted
|*Outer*|_Middle_|Inner|
|E|E|_|
{div}
{div:style=border:1px solid;}
all forms enabled
middle form has errors
middle form submitted
|Outer|*_Middle_*|Inner|
|_|E|_|
{div}
{div:style=border:1px solid;}
all forms enabled
inner form has errors
middle form submitted
|Outer|*Middle*|_Inner_|
|_|E|E|
{div}
{div:style=border:1px solid;}
middle form disabled
outer form has errors
outer form submitted
|*_Outer_*|-Middle-|Inner|
|E|_|_|
{div}
{div:style=border:1px solid;}
all forms enabled
inner form has errors
outer form submitted
|*Outer*|Middle|_Inner_|
|E|E|E|
{div}
{div:style=border:1px solid;}
middle form disabled
inner form has (*potential) errors
outer form submitted
|*Outer*|-Middle-|_Inner_*|
|S|_|_|
{div}