Hi Sven,

Few comments inline

On Wed, Mar 29, 2017 at 11:41 AM, <[email protected]> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/WICKET-6348-selection-change [created] 7f08fab8f
>
>
> WICKET-6348 use submitter instead of hidden field
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/15573cab
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/15573cab
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/15573cab
>
> Branch: refs/heads/WICKET-6348-selection-change
> Commit: 15573cabcf44768fe2631bb9b4b6dcf5e2b2e494
> Parents: 3179d34
> Author: Sven Meier <[email protected]>
> Authored: Tue Mar 28 21:34:56 2017 +0200
> Committer: Sven Meier <[email protected]>
> Committed: Wed Mar 29 11:33:34 2017 +0200
>
> ----------------------------------------------------------------------
>  .../apache/wicket/markup/html/form/Check.java   |   2 +-
>  .../wicket/markup/html/form/CheckBox.java       |  67 ++++++--
>  .../wicket/markup/html/form/CheckGroup.java     |  66 ++++++--
>  .../wicket/markup/html/form/DropDownChoice.java |  69 ++++++--
>  .../apache/wicket/markup/html/form/Form.java    | 164 +++++--------------
>  .../apache/wicket/markup/html/form/Radio.java   |   2 +-
>  .../wicket/markup/html/form/RadioChoice.java    |  67 ++++++--
>  .../wicket/markup/html/form/RadioGroup.java     |  63 ++++++-
>  .../wicket/markup/html/form/StatelessForm.java  |   1 -
>  .../wicket/markup/html/form/SubmitLink.java     |  40 ++---
>  .../form/AjaxFormSubmitTestPage_expected.html   |   2 +-
>  .../OnChangeAjaxBehaviorTestPage_expected.html  |   2 +-
>  .../CheckGroupDisabledTestPage_expected.html    |   2 +-
>  .../html/form/CheckGroupTestPage1_expected.html |   2 +-
>  .../html/form/CheckGroupTestPage2_expected.html |   2 +-
>  .../html/form/CheckGroupTestPage3_expected.html |   2 +-
>  .../html/form/CheckGroupTestPage4_expected.html |   2 +-
>  ...DropDownChoiceTestPage_A_false_expected.html |   2 +-
>  .../DropDownChoiceTestPage_A_true_expected.html |   2 +-
>  ...pDownChoiceTestPage_null_false_expected.html |   2 +-
>  ...opDownChoiceTestPage_null_true_expected.html |   2 +-
>  .../html/form/FormMethodTestPage_expected.html  |   4 +-
>  .../RadioGroupDisabledTestPage_expected.html    |   2 +-
>  .../html/form/RadioGroupTestPage1_expected.html |   2 +-
>  .../html/form/RadioGroupTestPage3_expected.html |   2 +-
>  .../form/feedback/FeedbackFormPage_result1.html |   2 +-
>  .../form/feedback/FeedbackFormPage_result2.html |   2 +-
>  .../FeedbackIndicatorFormPage_result1.html      |   2 +-
>  .../FeedbackIndicatorFormPage_result2.html      |   2 +-
>  .../html/form/pageWithParameters_expected.html  |   4 +-
>  .../validation/HomePage1_ExpectedResult.html    |   2 +-
>  .../EnclosurePageExpectedResult_9-1-1.html      |   2 +-
>  .../EnclosurePageExpectedResult_9-1.html        |   2 +-
>  .../EnclosurePageExpectedResult_9-2-1.html      |   2 +-
>  .../EnclosurePageExpectedResult_9-2.html        |   2 +-
>  .../EnclosurePageExpectedResult_9-3-1.html      |   2 +-
>  .../EnclosurePageExpectedResult_9-3-2.html      |   2 +-
>  .../EnclosurePageExpectedResult_9-3.html        |   2 +-
>  .../EnclosurePageExpectedResult_9-4.html        |   2 +-
>  .../internal/EnclosurePageExpectedResult_9.html |   2 +-
>  .../tags/InputTagNotVisibleWebPageResult.html   |   2 +-
>  .../html/tags/InputTagVisibleWebPageResult.html |   2 +-
>  .../StatelessPageWithForm_expected.html         |   2 +-
>  .../yui/calendar/DatesPage1_ExpectedResult.html |   6 +-
>  44 files changed, 358 insertions(+), 259 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/Check.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
> index ed50c80..83fa278 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Check.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Check.java
> @@ -203,7 +203,7 @@ public class Check<T> extends
> LabeledWebMarkupContainer implements IGenericCompo
>                         Form<?> form = group.findParent(Form.class);
>                         if (form != null)
>                         {
> -                               tag.put("onclick",
> form.getJsForInterfaceUrl(url));
> +                               tag.put("onclick",
> form.getJsForListenerUrl(url));
>                         }
>                         else
>                         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/CheckBox.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckBox.java
> index 9e25c4b..da8f049 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckBox.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckBox.java
> @@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
>  import java.util.Locale;
>
>  import org.apache.wicket.IRequestListener;
> +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.model.IModel;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
> @@ -81,35 +82,71 @@ public class CheckBox extends FormComponent<Boolean>
> implements IRequestListener
>         @Override
>         public void onRequest()
>         {
> -               convertInput();
> -               updateModel();
> -               onSelectionChanged(getModelObject());
> +               Form<?> form = getForm();
>

#getForm() currently throws if there is no form:
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java#L722-L725
You need to use Form.findForm(this) instead


> +               if (form == null) {
> +                       convertInput();
> +                       updateModel();
> +                       onSelectionChanged(getModelObject());
> +               } else {
> +                       form.onFormSubmitted(new IFormSubmitter()
> +                       {
> +                               @Override
> +                               public void onSubmit()
> +                               {
> +                                       convertInput();
> +                                       updateModel();
> +                                       onSelectionChanged(
> getModelObject());
> +                               }
> +
> +                               @Override
> +                               public void onError()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public void onAfterSubmit()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public Form<?> getForm()
> +                               {
> +                                       return CheckBox.this.getForm();
> +                               }
> +
> +                               @Override
> +                               public boolean getDefaultFormProcessing()
> +                               {
> +                                       return false;
> +                               }
> +                       });
> +               }
>         }
>
>         /**
> -        * Template method that can be overridden by clients that
> implement IOnChangeListener to be
> -        * notified by onChange events of a select element. This method
> does nothing by default.
> +        * Template method that can be overridden to be notified by value
> changes.
> +        * {@link #wantOnSelectionChangedNotifications()} has to be
> overriden to return {@value true} for
> +        * this method to being called.
>          * <p>
> -        * Called when a option is selected of a dropdown list that wants
> to be notified of this event.
> -        * This method is to be implemented by clients that want to be
> notified of selection events.
> +        * This method does nothing by default.
>          *
>          * @param newSelection
>          *            The newly selected object of the backing model NOTE
> this is the same as you would
>          *            get by calling getModelObject() if the new selection
> were current
> -        * @see #wantOnSelectionChangedNotifications()
>          */
>         protected void onSelectionChanged(Boolean newSelection)
>         {
>         }
>
>         /**
> -        * Whether this component's onSelectionChanged event handler
> should called using javascript if
> -        * the selection changes. If true, a roundtrip will be generated
> with each selection change,
> -        * resulting in the model being updated (of just this component)
> and onSelectionChanged being
> -        * called. This method returns false by default.
> +        * Whether a request should be generated with each selection
> change, resulting in the
> +        * model being updated (of just this component) and {@link
> #onSelectionChanged(Object)}
> +        * being called. This method returns false by default.
> +        * <p>
> +        * Use an {@link AjaxFormComponentUpdatingBehavior} with
> <tt>change</tt> event,
> +        * if you want to use Ajax instead.
>          *
> -        * @return True if this component's onSelectionChanged event
> handler should called using
> -        *         javascript if the selection changes
> +        * @return returns {@value false} by default, i.e. selection
> changes do not result in a request
>          */
>         protected boolean wantOnSelectionChangedNotifications()
>         {
> @@ -169,7 +206,7 @@ public class CheckBox extends FormComponent<Boolean>
> implements IRequestListener
>                         Form<?> form = findParent(Form.class);
>                         if (form != null)
>                         {
> -                               tag.put("onclick",
> form.getJsForInterfaceUrl(url));
> +                               tag.put("onclick",
> form.getJsForListenerUrl(url));
>                         }
>                         else
>                         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/CheckGroup.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckGroup.java
> index 8795ec4..ead1823 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckGroup.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/CheckGroup.java
> @@ -21,6 +21,7 @@ import java.util.List;
>
>  import org.apache.wicket.IRequestListener;
>  import org.apache.wicket.WicketRuntimeException;
> +import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatin
> gBehavior;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.markup.html.WebMarkupContainer;
>  import org.apache.wicket.model.IModel;
> @@ -207,34 +208,71 @@ public class CheckGroup<T> extends
> FormComponent<Collection<T>> implements IRequ
>         @Override
>         public final void onRequest()
>         {
> -               convertInput();
> -               updateModel();
> -               onSelectionChanged(getModelObject());
> +               Form<?> form = getForm();
> +               if (form == null) {
> +                       convertInput();
> +                       updateModel();
> +                       onSelectionChanged(getModelObject());
> +               } else {
> +                       form.onFormSubmitted(new IFormSubmitter()
> +                       {
> +                               @Override
> +                               public void onSubmit()
> +                               {
> +                                       convertInput();
> +                                       updateModel();
> +                                       onSelectionChanged(
> getModelObject());
> +                               }
> +
> +                               @Override
> +                               public void onError()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public void onAfterSubmit()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public Form<?> getForm()
> +                               {
> +                                       return CheckGroup.this.getForm();
> +                               }
> +
> +                               @Override
> +                               public boolean getDefaultFormProcessing()
> +                               {
> +                                       return false;
> +                               }
> +                       });
> +               }
>         }
>
>         /**
> -        * Template method that can be overridden by clients that
> implement IOnChangeListener to be
> -        * notified by onChange events of a select element. This method
> does nothing by default.
> +        * Template method that can be overridden to be notified by value
> changes.
> +        * {@link #wantOnSelectionChangedNotifications()} has to be
> overriden to return {@value true} for
> +        * this method to being called.
>          * <p>
> -        * Called when a {@link Check} is clicked in a {@link CheckGroup}
> that wants to be notified of
> -        * this event. This method is to be implemented by clients that
> want to be notified of selection
> -        * events.
> +        * This method does nothing by default.
>          *
>          * @param newSelection
> -        *            The new selection of the {@link CheckGroup}. NOTE
> this is the same as you would
> +        *            The newly selected object of the backing model NOTE
> this is the same as you would
>          *            get by calling getModelObject() if the new selection
> were current
> -        *
> -        * @see #wantOnSelectionChangedNotifications()
>          */
>         protected void onSelectionChanged(final Collection<T> newSelection)
>         {
>         }
>
>         /**
> -        * This method should be overridden to return true if it is
> desirable to have
> -        * on-selection-changed notification.
> +        * Whether a request should be generated with each selection
> change, resulting in the
> +        * model being updated (of just this component) and {@link
> #onSelectionChanged(Object)}
> +        * being called. This method returns false by default.
> +        * <p>
> +        * Use an {@link AjaxFormChoiceComponentUpdatingBehavior} with
> <tt>change</tt> event,
> +        * if you want to use Ajax instead.
>          *
> -        * @return true if component should receive on-selection-changed
> notifications, false otherwise
> +        * @return returns {@value false} by default, i.e. selection
> changes do not result in a request
>          */
>         protected boolean wantOnSelectionChangedNotifications()
>         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/DropDownChoice.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/DropDownChoice.java
> index 954ada6..cee8851 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/DropDownChoice.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/DropDownChoice.java
> @@ -209,9 +209,45 @@ public class DropDownChoice<T> extends
> AbstractSingleSelectChoice<T> implements
>         @Override
>         public final void onRequest()
>         {
> -               convertInput();
> -               updateModel();
> -               onSelectionChanged(getModelObject());
> +               Form<?> form = getForm();
> +               if (form == null) {
> +                       convertInput();
> +                       updateModel();
> +                       onSelectionChanged(getModelObject());
> +               } else {
> +                       form.getRootForm().onFormSubmitted(new
> IFormSubmitter()
> +                       {
> +                               @Override
> +                               public void onSubmit()
> +                               {
> +                                       convertInput();
> +                                       updateModel();
> +                                       onSelectionChanged(
> getModelObject());
> +                               }
> +
> +                               @Override
> +                               public void onError()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public void onAfterSubmit()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public Form<?> getForm()
> +                               {
> +                                       return
> DropDownChoice.this.getForm();
> +                               }
> +
> +                               @Override
> +                               public boolean getDefaultFormProcessing()
> +                               {
> +                                       return false;
> +                               }
> +                       });
> +               }
>         }
>
>         /**
> @@ -230,14 +266,12 @@ public class DropDownChoice<T> extends
> AbstractSingleSelectChoice<T> implements
>                 // selection changed?
>                 if (wantOnSelectionChangedNotifications())
>                 {
> -                       // we do not want relative URL here, because it
> will be used by
> -                       // Form#dispatchEvent
>                         CharSequence url = urlForListener(new
> PageParameters());
>
>                         Form<?> form = findParent(Form.class);
>                         if (form != null)
>                         {
> -                               tag.put("onchange",
> form.getJsForInterfaceUrl(url.toString()));
> +                               tag.put("onchange",
> form.getJsForListenerUrl(url.toString()));
>                         }
>                         else
>                         {
> @@ -251,11 +285,11 @@ public class DropDownChoice<T> extends
> AbstractSingleSelectChoice<T> implements
>         }
>
>         /**
> -        * Template method that can be overridden by clients that
> implement IOnChangeListener to be
> -        * notified by onChange events of a select element. This method
> does nothing by default.
> +        * Template method that can be overridden to be notified by value
> changes.
> +        * {@link #wantOnSelectionChangedNotifications()} has to be
> overriden to return {@value true} for
> +        * this method to being called.
>          * <p>
> -        * Called when a option is selected of a dropdown list that wants
> to be notified of this event.
> -        * This method is to be implemented by clients that want to be
> notified of selection events.
> +        * This method does nothing by default.
>          *
>          * @param newSelection
>          *            The newly selected object of the backing model NOTE
> this is the same as you would
> @@ -266,15 +300,14 @@ public class DropDownChoice<T> extends
> AbstractSingleSelectChoice<T> implements
>         }
>
>         /**
> -        * Whether this component's onSelectionChanged event handler
> should be called using javascript
> -        * <tt>window.location</tt> if the selection changes. If true, a
> roundtrip will be generated
> -        * with each selection change, resulting in the model being
> updated (of just this component) and
> -        * onSelectionChanged being called. This method returns false by
> default. If you wish to use
> -        * Ajax instead, let {@link #wantOnSelectionChangedNotifications()}
> return false and add an
> -        * {@link AjaxFormComponentUpdatingBehavior} to the component
> using the <tt>onchange</tt> event.
> +        * Whether a request should be generated with each selection
> change, resulting in the
> +        * model being updated (of just this component) and {@link
> #onSelectionChanged(Object)}
> +        * being called. This method returns false by default.
> +        * <p>
> +        * Use an {@link AjaxFormComponentUpdatingBehavior} with
> <tt>change</tt> event,
> +        * if you want to use Ajax instead.
>          *
> -        * @return True if this component's onSelectionChanged event
> handler should called using
> -        *         javascript if the selection changes
> +        * @return returns {@value false} by default, i.e. selection
> changes do not result in a request
>          */
>         protected boolean wantOnSelectionChangedNotifications()
>         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/Form.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> index e8b61e7..0a68aa7 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Form.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Form.java
> @@ -48,13 +48,8 @@ import org.apache.wicket.model.IModel;
>  import org.apache.wicket.model.Model;
>  import org.apache.wicket.protocol.http.servlet.
> MultipartServletWebRequest;
>  import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
> -import org.apache.wicket.request.IRequestHandler;
> -import org.apache.wicket.request.IRequestMapper;
>  import org.apache.wicket.request.IRequestParameters;
> -import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Response;
> -import org.apache.wicket.request.Url;
> -import org.apache.wicket.request.UrlRenderer;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
>  import org.apache.wicket.util.encoding.UrlDecoder;
>  import org.apache.wicket.util.lang.Args;
> @@ -514,44 +509,19 @@ public class Form<T> extends WebMarkupContainer
>         }
>
>         /**
> -        * This generates a piece of javascript code that sets the url in
> the special hidden field and
> -        * submits the form.
> +        * Generate a piece of JavaScript that submits the form to the
> given URL.
>          *
>          * Warning: This code should only be called in the rendering phase
> for form components inside
>          * the form because it uses the css/javascript id of the form
> which can be stored in the markup.
>          *
>          * @param url
> -        *            The interface url that has to be stored in the
> hidden field and submitted
> -        * @return The javascript code that submits the form.
> +        *            The listener url to be submitted to
> +        * @return the javascript code that submits the form.
>          */
> -       public final CharSequence getJsForInterfaceUrl(CharSequence url)
> +       public final CharSequence getJsForListenerUrl(CharSequence url)
>

IMO we should keep "getJsForInterfaceUrl" as depracated alias in 8.x and
remove it in 9.x.


>         {
> -               /*
> -                * since the passed in url is handled when the current url
> is form's action url and not the
> -                * current request's url we rerender the passed in url to
> be relative to the form's action
> -                * url
> -                */
> -               UrlRenderer renderer = getRequestCycle().getUrlRenderer();
> -               Url oldBase = renderer.getBaseUrl();
> -               try
> -               {
> -                       Url action = Url.parse(getActionUrl().toString());
> -                       renderer.setBaseUrl(action);
> -                       url = renderer.renderUrl(Url.parse(
> url.toString()));
> -               }
> -               finally
> -               {
> -                       renderer.setBaseUrl(oldBase);
> -               }
> -
>                 Form<?> root = getRootForm();
> -               return new AppendingStringBuffer("
> document.getElementById('").append(
> -                       root.getHiddenFieldId())
> -                       .append("').value='")
> -                       .append(url)
> -                       .append("';document.getElementById('")
> -                       .append(root.getMarkupId())
> -                       .append("').submit();");
> +               return String.format("var f =
> document.getElementById('%s'); f.action='%s';f.submit();",
> root.getMarkupId(), url);
>         }
>
>         /**
> @@ -748,59 +718,49 @@ public class Form<T> extends WebMarkupContainer
>                         // Tells FormComponents that a new user input has
> come
>                         inputChanged();
>
> -                       String url = getRequest().getRequestParameters()
> -                               .getParameterValue(getHiddenFieldId())
> -                               .toString();
> -                       if (!Strings.isEmpty(url))
> -                       {
> -                               dispatchEvent(getPage(), url);
> -                       }
> -                       else
> +                       // First, see if the processing was triggered by a
> Wicket IFormSubmittingComponent
> +                       if (submitter == null)
>                         {
> -                               // First, see if the processing was
> triggered by a Wicket IFormSubmittingComponent
> -                               if (submitter == null)
> +                               submitter = findSubmittingButton();
> +
> +                               if (submitter instanceof
> IFormSubmittingComponent)
>                                 {
> -                                       submitter = findSubmittingButton();
> +                                       IFormSubmittingComponent
> submittingComponent = (IFormSubmittingComponent)submitter;
> +                                       Component component =
> (Component)submitter;
>
> -                                       if (submitter instanceof
> IFormSubmittingComponent)
> +                                       if (!component.
> isVisibleInHierarchy())
>                                         {
> -                                               IFormSubmittingComponent
> submittingComponent = (IFormSubmittingComponent)submitter;
> -                                               Component component =
> (Component)submitter;
> -
> -                                               if (!component.
> isVisibleInHierarchy())
> -                                               {
> -                                                       throw new
> WicketRuntimeException("Submit Button " +
> -
>  submittingComponent.getInputName() + " (path=" +
> -
>  component.getPageRelativePath() + ") is not visible");
> -                                               }
> +                                               throw new
> WicketRuntimeException("Submit Button " +
> +
>  submittingComponent.getInputName() + " (path=" +
> +
>  component.getPageRelativePath() + ") is not visible");
> +                                       }
>
> -                                               if (!component.
> isEnabledInHierarchy())
> -                                               {
> -                                                       throw new
> WicketRuntimeException("Submit Button " +
> -
>  submittingComponent.getInputName() + " (path=" +
> -
>  component.getPageRelativePath() + ") is not enabled");
> -                                               }
> +                                       if (!component.
> isEnabledInHierarchy())
> +                                       {
> +                                               throw new
> WicketRuntimeException("Submit Button " +
> +
>  submittingComponent.getInputName() + " (path=" +
> +
>  component.getPageRelativePath() + ") is not enabled");
>                                         }
>                                 }
> +                       }
>
> -                               // When processing was triggered by a
> Wicket IFormSubmittingComponent and that
> -                               // component indicates it wants to be
> called immediately
> -                               // (without processing), call the
> IFormSubmittingComponent.onSubmit* methods right
> -                               // away.
> -                               if (submitter != null && !submitter.
> getDefaultFormProcessing())
> -                               {
> -                                       submitter.onSubmit();
> -                                       submitter.onAfterSubmit();
> -                               }
> -                               else
> -                               {
> -                                       // the submit request might be for
> one of the nested forms, so let's
> -                                       // find the right one:
> -                                       final Form<?> formToProcess =
> findFormToProcess(submitter);
> +                       // When processing was triggered by a Wicket
> IFormSubmittingComponent and that
> +                       // component indicates it wants to be called
> immediately
> +                       // (without processing), call the
> IFormSubmittingComponent.onSubmit* methods right
> +                       // away.
> +                       if (submitter != null && !submitter.
> getDefaultFormProcessing())
> +                       {
> +                               submitter.onSubmit();
> +                               submitter.onAfterSubmit();
> +                       }
> +                       else
> +                       {
> +                               // the submit request might be for one of
> the nested forms, so let's
> +                               // find the right one:
> +                               final Form<?> formToProcess =
> findFormToProcess(submitter);
>
> -                                       // process the form for this
> request
> -                                       formToProcess.process(submitter);
> -                               }
> +                               // process the form for this request
> +                               formToProcess.process(submitter);
>                         }
>                 }
>                 // If multi part did fail check if an error is registered
> and call
> @@ -1183,35 +1143,6 @@ public class Form<T> extends WebMarkupContainer
>         }
>
>         /**
> -        * Method for dispatching/calling a interface on a page from the
> given url. Used by
> -        * {@link Form#onRequest()} for dispatching events
> -        *
> -        * @param page
> -        *            The page where the event should be called on.
> -        * @param url
> -        *            The url which describes the component path and the
> interface to be called.
> -        */
> -       private void dispatchEvent(final Page page, final String url)
> -       {
> -               // the current request's url is most likely
> wicket/page?x-y.IFormSubmitListener-path-to-form
> -               // while the passed in url is most likely
> page?x.y.IOnChangeListener-path-to-component
> -               // we transform the passed in url into wicket/page?x-y.
> IOnChangeListener-path-to-component
> -               // so the system mapper can interpret it
> -               String urlWoJSessionId = Strings.stripJSessionId(url);
> -               Url resolved = new Url(getRequest().getUrl());
> -               resolved.resolveRelative(Url.parse(urlWoJSessionId));
> -
> -               IRequestMapper mapper = getApplication().
> getRootRequestMapper();
> -               Request request = getRequest().cloneWithUrl(resolved);
> -               IRequestHandler handler = mapper.mapRequest(request);
> -
> -               if (handler != null)
> -               {
> -                       getRequestCycle().scheduleRequestHandlerAfterCur
> rent(handler);
> -               }
> -       }
> -
> -       /**
>          * Visits the form's children FormComponents and inform them that
> a new user input is available
>          * in the Request
>          */
> @@ -1714,29 +1645,22 @@ public class Form<T> extends WebMarkupContainer
>          */
>         public final void writeHiddenFields()
>         {
> -               // get the hidden field id
> -               String nameAndId = getHiddenFieldId();
> -
> -               AppendingStringBuffer buffer = new
> AppendingStringBuffer(HIDDEN_DIV_START).append(
> -                       "<input type=\"hidden\" name=\"")
> -                       .append(nameAndId)
> -                       .append("\" id=\"")
> -                       .append(nameAndId)
> -                       .append("\" />");
> -
>                 // if it's a get, did put the parameters in the action
> attribute,
>                 // and have to write the url parameters as hidden fields
>                 if (encodeUrlInHiddenFields())
>                 {
> +                       AppendingStringBuffer buffer = new
> AppendingStringBuffer(HIDDEN_DIV_START);
> +
>                         String url = getActionUrl().toString();
>                         int i = url.indexOf('?');
>                         String queryString = (i > -1) ? url.substring(i +
> 1) : url;
>                         String[] params = Strings.split(queryString, '&');
>
>                         writeParamsAsHiddenFields(params, buffer);
> +
> +                       buffer.append("</div>");
> +                       getResponse().write(buffer);
>                 }
> -               buffer.append("</div>");
> -               getResponse().write(buffer);
>
>                 // if a default submitting component was set, handle the
> rendering of that
>                 if (defaultSubmittingComponent instanceof Component)
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/Radio.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
> index 6a5a46f..1c38c11 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Radio.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/Radio.java
> @@ -188,7 +188,7 @@ public class Radio<T> extends
> LabeledWebMarkupContainer implements IGenericCompo
>                         Form<?> form = group.findParent(Form.class);
>                         if (form != null)
>                         {
> -                               tag.put("onclick",
> form.getJsForInterfaceUrl(url));
> +                               tag.put("onclick",
> form.getJsForListenerUrl(url));
>                         }
>                         else
>                         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/RadioChoice.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioChoice.java
> index 0a2f11b..13b8b33 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioChoice.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioChoice.java
> @@ -20,6 +20,7 @@ import java.util.List;
>  import java.util.Map;
>
>  import org.apache.wicket.IRequestListener;
> +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.markup.MarkupStream;
>  import org.apache.wicket.model.IModel;
> @@ -251,35 +252,71 @@ public class RadioChoice<T> extends
> AbstractSingleSelectChoice<T> implements IRe
>         @Override
>         public void onRequest()
>         {
> -               convertInput();
> -               updateModel();
> -               onSelectionChanged(getModelObject());
> +               Form<?> form = getForm();
> +               if (form == null) {
> +                       convertInput();
> +                       updateModel();
> +                       onSelectionChanged(getModelObject());
> +               } else {
> +                       form.onFormSubmitted(new IFormSubmitter()
> +                       {
> +                               @Override
> +                               public void onSubmit()
> +                               {
> +                                       convertInput();
> +                                       updateModel();
> +                                       onSelectionChanged(
> getModelObject());
> +                               }
> +
> +                               @Override
> +                               public void onError()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public void onAfterSubmit()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public Form<?> getForm()
> +                               {
> +                                       return RadioChoice.this.getForm();
> +                               }
> +
> +                               @Override
> +                               public boolean getDefaultFormProcessing()
> +                               {
> +                                       return false;
> +                               }
> +                       });
> +               }
>         }
>
>         /**
> -        * Template method that can be overridden by clients that
> implement IOnChangeListener to be
> -        * notified by onChange events of a select element. This method
> does nothing by default.
> +        * Template method that can be overridden to be notified by value
> changes.
> +        * {@link #wantOnSelectionChangedNotifications()} has to be
> overriden to return {@value true} for
> +        * this method to being called.
>          * <p>
> -        * Called when a option is selected of a dropdown list that wants
> to be notified of this event.
> -        * This method is to be implemented by clients that want to be
> notified of selection events.
> +        * This method does nothing by default.
>          *
>          * @param newSelection
>          *            The newly selected object of the backing model NOTE
> this is the same as you would
>          *            get by calling getModelObject() if the new selection
> were current
> -        * @see #wantOnSelectionChangedNotifications()
>          */
>         protected void onSelectionChanged(T newSelection)
>         {
>         }
>
>         /**
> -        * Whether this component's onSelectionChanged event handler
> should called using javascript if
> -        * the selection changes. If true, a roundtrip will be generated
> with each selection change,
> -        * resulting in the model being updated (of just this component)
> and onSelectionChanged being
> -        * called. This method returns false by default.
> +        * Whether a request should be generated with each selection
> change, resulting in the
> +        * model being updated (of just this component) and {@link
> #onSelectionChanged(Object)}
> +        * being called. This method returns false by default.
> +        * <p>
> +        * Use an {@link AjaxFormComponentUpdatingBehavior} with
> <tt>change</tt> event,
> +        * if you want to use Ajax instead.
>          *
> -        * @return True if this component's onSelectionChanged event
> handler should called using
> -        *         javascript if the selection changes
> +        * @return returns {@value false} by default, i.e. selection
> changes do not result in a request
>          */
>         protected boolean wantOnSelectionChangedNotifications()
>         {
> @@ -534,7 +571,7 @@ public class RadioChoice<T> extends
> AbstractSingleSelectChoice<T> implements IRe
>                                 if (form != null)
>                                 {
>                                         buffer.append(" onclick=\"")
> -                                               .append(form.
> getJsForInterfaceUrl(url))
> +                                               .append(form.
> getJsForListenerUrl(url))
>                                                 .append(";\"");
>                                 }
>                                 else
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/RadioGroup.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioGroup.java
> index 1a54bad..51778a4 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioGroup.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/RadioGroup.java
> @@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.form;
>
>  import org.apache.wicket.IRequestListener;
>  import org.apache.wicket.WicketRuntimeException;
> +import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatin
> gBehavior;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.markup.html.WebMarkupContainer;
>  import org.apache.wicket.model.IModel;
> @@ -72,6 +73,16 @@ public class RadioGroup<T> extends FormComponent<T>
> implements IRequestListener
>                 setRenderBodyOnly(true);
>         }
>
> +       /**
> +        * Whether a request should be generated with each selection
> change, resulting in the
> +        * model being updated (of just this component) and {@link
> #onSelectionChanged(Object)}
> +        * being called. This method returns false by default.
> +        * <p>
> +        * Use an {@link AjaxFormChoiceComponentUpdatingBehavior} with
> <tt>change</tt> event,
> +        * if you want to use Ajax instead.
> +        *
> +        * @return returns {@value false} by default, i.e. selection
> changes do not result in a request
> +        */
>         protected boolean wantOnSelectionChangedNotifications()
>         {
>                 return false;
> @@ -170,23 +181,57 @@ public class RadioGroup<T> extends FormComponent<T>
> implements IRequestListener
>         @Override
>         public final void onRequest()
>         {
> -               convertInput();
> -               updateModel();
> -               onSelectionChanged(getModelObject());
> +               Form<?> form = getForm();
> +               if (form == null) {
> +                       convertInput();
> +                       updateModel();
> +                       onSelectionChanged(getModelObject());
> +               } else {
> +                       form.onFormSubmitted(new IFormSubmitter()
> +                       {
> +                               @Override
> +                               public void onSubmit()
> +                               {
> +                                       convertInput();
> +                                       updateModel();
> +                                       onSelectionChanged(
> getModelObject());
> +                               }
> +
> +                               @Override
> +                               public void onError()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public void onAfterSubmit()
> +                               {
> +                               }
> +
> +                               @Override
> +                               public Form<?> getForm()
> +                               {
> +                                       return RadioGroup.this.getForm();
> +                               }
> +
> +                               @Override
> +                               public boolean getDefaultFormProcessing()
> +                               {
> +                                       return false;
> +                               }
> +                       });
> +               }
>         }
>
>         /**
> -        * Template method that can be overridden by clients that
> implement IOnChangeListener to be
> -        * notified by onChange events of a select element. This method
> does nothing by default.
> +        * Template method that can be overridden to be notified by value
> changes.
> +        * {@link #wantOnSelectionChangedNotifications()} has to be
> overriden to return {@value true} for
> +        * this method to being called.
>          * <p>
> -        * Called when a option is selected of a dropdown list that wants
> to be notified of this event.
> -        * This method is to be implemented by clients that want to be
> notified of selection events.
> +        * This method does nothing by default.
>          *
>          * @param newSelection
>          *            The newly selected object of the backing model NOTE
> this is the same as you would
>          *            get by calling getModelObject() if the new selection
> were current
> -        *
> -        * @see #wantOnSelectionChangedNotifications()
>          */
>         protected void onSelectionChanged(final T newSelection)
>         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/StatelessForm.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/StatelessForm.java
> index ae6b5e8..eb01bc8 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/StatelessForm.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/StatelessForm.java
> @@ -109,7 +109,6 @@ public class StatelessForm<T> extends Form<T>
>                                         parameters.remove(
> formComponent.getInputName());
>                                 }
>                         });
> -                       parameters.remove(getHiddenFieldId());
>                         if (submittingComponent instanceof
> AbstractSubmitLink)
>                         {
>                                 AbstractSubmitLink submitLink =
> (AbstractSubmitLink)submittingComponent;
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/main/java/org/apache/wicket/markup/
> html/form/SubmitLink.java
> ----------------------------------------------------------------------
> diff --git 
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/SubmitLink.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/SubmitLink.java
> index d5de8be..bace3ae 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/SubmitLink.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/
> form/SubmitLink.java
> @@ -16,8 +16,10 @@
>   */
>  package org.apache.wicket.markup.html.form;
>
> +import org.apache.wicket.IRequestListener;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.model.IModel;
> +import org.apache.wicket.request.mapper.parameter.PageParameters;
>
>  /**
>   * A link which can be used exactly like a Button to submit a Form. The
> onclick of the link will use
> @@ -67,7 +69,7 @@ import org.apache.wicket.model.IModel;
>   * @author Eelco Hillenius
>   *
>   */
> -public class SubmitLink extends AbstractSubmitLink
> +public class SubmitLink extends AbstractSubmitLink implements
> IRequestListener
>  {
>         private static final long serialVersionUID = 1L;
>
> @@ -194,37 +196,16 @@ public class SubmitLink extends AbstractSubmitLink
>          *
>          * @return The JavaScript to be executed when the link is clicked.
>          */
> -       protected String getTriggerJavaScript()
> +       protected CharSequence getTriggerJavaScript()
>         {
>                 if (getForm() != null)
>                 {
>                         // find the root form - the one we are really
> going to submit
>                         Form<?> root = getForm().getRootForm();
> -                       StringBuilder sb = new StringBuilder(100);
> -                       sb.append("var e=document.getElementById('");
> -                       sb.append(root.getHiddenFieldId());
> -                       sb.append("'); e.name=\'");
> -                       sb.append(getInputName());
> -                       sb.append("'; e.value='x';");
> -                       sb.append("var f=document.getElementById('");
> -                       sb.append(root.getMarkupId());
> -                       sb.append("');");
> -                       if (shouldInvokeJavaScriptFormOnsubmit())
> -                       {
> -                               if (getForm() != root)
> -                               {
> -                                       sb.append("var
> ff=document.getElementById('");
> -                                       sb.append(getForm().
> getMarkupId());
> -                                       sb.append("');");
> -                               }
> -                               else
> -                               {
> -                                       sb.append("var ff=f;");
> -                               }
> -                               sb.append("if (typeof ff.onsubmit ===
> 'function') { if (ff.onsubmit()==false) return false; }");
> -                       }
> -                       sb.append("f.submit();e.value='';e.name='';return
> false;");
> -                       return sb.toString();
> +
> +                       CharSequence url = urlForListener(new
> PageParameters());
> +
> +                       return root.getJsForListenerUrl(url);
>                 }
>                 else
>                 {
> @@ -232,6 +213,11 @@ public class SubmitLink extends AbstractSubmitLink
>                 }
>         }
>
> +       @Override
> +       public void onRequest()
> +       {
> +               getForm().onFormSubmitted(this);
> +       }
>
>         /**
>          * @see org.apache.wicket.markup.html.
> form.IFormSubmittingComponent#onError()
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/ajax/
> form/AjaxFormSubmitTestPage_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> AjaxFormSubmitTestPage_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
> index c5b441e..575770d 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> AjaxFormSubmitTestPage_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> AjaxFormSubmitTestPage_expected.html
> @@ -22,7 +22,7 @@ Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_
> BOUND);
>  /*]]>*/
>  </script>
>  </head><body>
> -               <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +               <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>                         <input type="text" wicket:id="txt1" value="foo"
> name="txt1"/>
>                         <input type="text" wicket:id="txt2" value="bar"
> name="txt2"/>
>                         <input type="submit" value="Submit"
> wicket:id="submit" name="p::submit" id="submit2"/>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> OnChangeAjaxBehaviorTestPage_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> OnChangeAjaxBehaviorTestPage_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
> index 24ec8cb..0535212 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> OnChangeAjaxBehaviorTestPage_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/
> OnChangeAjaxBehaviorTestPage_expected.html
> @@ -23,7 +23,7 @@ Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_
> BOUND);
>  /*]]>*/
>  </script>
>  </head><body>
> -               <form wicket:id="form" id="form3" method="post"
> action="./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?0-1.-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form3_hf_0"
> id="form3_hf_0" /></div>
> +               <form wicket:id="form" id="form3" method="post"
> action="./org.apache.wicket.ajax.form.OnChangeAjaxBehaviorTestPage?
> 0-1.-form">
>                         <input type="text" wicket:id="field" value=""
> name="field" id="field1"/>
>
>                         <select wicket:id="dropDown" name="dropDown"
> id="dropDown2">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> CheckGroupDisabledTestPage_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> CheckGroupDisabledTestPage_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/CheckGroupDisabledTestPage_
> expected.html
> index 4ac8378..58aada7 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> CheckGroupDisabledTestPage_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> CheckGroupDisabledTestPage_expected.html
> @@ -2,7 +2,7 @@
>  <head><title>CheckGroupTestPage1</title></head>
>  <body>
>      <!--  In addition test that chars are not converted from upper to
> lower and vice versa -->
> -       <FORM wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.CheckGroupDisabledTestPage?0-1.-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form1_hf_0"
> id="form1_hf_0" /></div>
> +       <FORM wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.CheckGroupDisabledTestPage?0-
> 1.-form">
>                 <span wicket:id="group">
>                         <input type="checkbox" wicket:id="check1"
> id="check12" name="group" value="check0" checked="checked"
> disabled="disabled">check1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/CheckGroupTestPage1_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage1_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/CheckGroupTestPage1_expected.html
> index abd39dc..7f1747b 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage1_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage1_expected.html
> @@ -2,7 +2,7 @@
>  <head><title>CheckGroupTestPage1</title></head>
>  <body>
>      <!--  In addition test that chars are not converted from upper to
> lower and vice versa -->
> -       <FORM wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage1?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +       <FORM wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage1?0-1.-form">
>
>                         <input type="checkbox" wicket:id="check1"
> id="check12" name="group" value="check0">check1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/CheckGroupTestPage2_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage2_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/CheckGroupTestPage2_expected.html
> index 1683546..23a04c2 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage2_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage2_expected.html
> @@ -1,7 +1,7 @@
>  <html>
>  <head><title>CheckGroupTestPage2</title></head>
>  <body>
> -       <form wicket:id="form" id="form4" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage2?1-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form4_hf_0" id="form4_hf_0" /></div>
> +       <form wicket:id="form" id="form4" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage2?1-1.-form">
>
>                         <input type="checkbox" wicket:id="check1"
> id="check15" name="group" value="check0" checked="checked">check1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/CheckGroupTestPage3_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage3_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/CheckGroupTestPage3_expected.html
> index 8030cc7..6abb92e 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage3_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage3_expected.html
> @@ -1,7 +1,7 @@
>  <html>
>  <head><title>CheckGroupTestPage3</title></head>
>  <body>
> -       <form wicket:id="form" id="form7" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage3?2-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form7_hf_0" id="form7_hf_0" /></div>
> +       <form wicket:id="form" id="form7" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage3?2-1.-form">
>
>                         <input type="checkbox" wicket:id="check1"
> id="check18" name="group" value="check0">check1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/CheckGroupTestPage4_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage4_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/CheckGroupTestPage4_expected.html
> index 5eb87ac..2fc9396 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage4_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/CheckGroupTestPage4_expected.html
> @@ -1,7 +1,7 @@
>  <html>
>  <head><title>CheckGroupTestPage4</title></head>
>  <body>
> -       <form wicket:id="form" id="forma" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage4?3-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="forma_hf_0" id="forma_hf_0" /></div>
> +       <form wicket:id="form" id="forma" method="post"
> action="./org.apache.wicket.markup.html.form.
> CheckGroupTestPage4?3-1.-form">
>
>                         <input type="checkbox" wicket:id="check1"
> id="check1b" name="group" value="check0" checked="checked">check1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> DropDownChoiceTestPage_A_false_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_false_expected.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_false_expected.html
> index 26965dc..17d5584 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_false_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_false_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>      <select wicket:id="dropdown" name="dropdown">
>  <option selected="selected" value="0">A</option>
>  <option value="1">B</option>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> DropDownChoiceTestPage_A_true_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_true_expected.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_true_expected.html
> index 125c2fe..3f4c765 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_true_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_A_true_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>      <select wicket:id="dropdown" name="dropdown">
>  <option value=""></option>
>  <option selected="selected" value="0">A</option>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> DropDownChoiceTestPage_null_false_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_false_expected.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_false_expected.html
> index c1263ea..a753ec1 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_false_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_false_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>      <select wicket:id="dropdown" name="dropdown">
>  <option selected="selected" value="">Choose One</option>
>  <option value="0">A</option>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> DropDownChoiceTestPage_null_true_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_true_expected.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_true_expected.html
> index 7dc93d7..ece03d5 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_true_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/DropDownChoiceTestPage_null_true_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>      <select wicket:id="dropdown" name="dropdown">
>  <option selected="selected" value=""></option>
>  <option value="0">A</option>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/FormMethodTestPage_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/FormMethodTestPage_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/FormMethodTestPage_expected.html
> index 6050ab1..6689a44 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/FormMethodTestPage_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/FormMethodTestPage_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -       <form wicket:id="formpost" id="formpost1" method="post"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage?0-1.-formpost"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="formpost1_hf_0"
> id="formpost1_hf_0" /></div></form>
> -       <form wicket:id="formget" id="formget2" method="get"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="formget2_hf_0"
> id="formget2_hf_0" /><input type="hidden" name="0-1.-formget" value=""
> /></div></form>
> +       <form wicket:id="formpost" id="formpost1" method="post"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage?0-1.-
> formpost"></form>
> +       <form wicket:id="formget" id="formget2" method="get"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="0-1.-formget"
> value="" /></div></form>
>  </body>
>  </html>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> RadioGroupDisabledTestPage_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> RadioGroupDisabledTestPage_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/RadioGroupDisabledTestPage_
> expected.html
> index 3f468c0..67a52bf 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> RadioGroupDisabledTestPage_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/
> RadioGroupDisabledTestPage_expected.html
> @@ -1,7 +1,7 @@
>  <html>
>  <head><title>RadioGroupTestPage1</title></head>
>  <body>
> -       <form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.RadioGroupDisabledTestPage?0-1.-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form1_hf_0"
> id="form1_hf_0" /></div>
> +       <form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.RadioGroupDisabledTestPage?0-
> 1.-form">
>                 <span wicket:id="group">
>                         <input type="radio" wicket:id="radio1"
> id="radio12" name="group" value="radio0" disabled="disabled">radio1</
> input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/RadioGroupTestPage1_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage1_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/RadioGroupTestPage1_expected.html
> index 09dee23..ca5bed6 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage1_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage1_expected.html
> @@ -1,7 +1,7 @@
>  <html>
>  <head><title>RadioGroupTestPage1</title></head>
>  <body>
> -       <form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> RadioGroupTestPage1?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +       <form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> RadioGroupTestPage1?0-1.-form">
>
>                         <input type="radio" wicket:id="radio1"
> id="radio12" name="group" value="radio0">radio1</input>
>                         <span wicket:id="container">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/RadioGroupTestPage3_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage3_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/RadioGroupTestPage3_expected.html
> index 4a6a0b6..f836c9d 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage3_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/RadioGroupTestPage3_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> RadioGroupTestPage3?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.
> RadioGroupTestPage3?0-1.-form">
>
>                 <input wicket:id="check1" type="radio" id="check12"
> name="radio" value="radio0" checked="checked">Yes
>                 <input wicket:id="check2" type="radio" id="check23"
> name="radio" value="radio1" checked="checked">No
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/feedback/FeedbackFormPage_result1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result1.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/feedback/FeedbackFormPage_result1.html
> index 1beb7a5..6428a2e 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result1.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackFormPage?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackFormPage?0-1.-form">
>  <span wicket:id="feedback"><wicket:border>
>                 <wicket:body>
>         <input type="text" wicket:id="input" value=""
> name="feedback:feedback_body:input">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/feedback/FeedbackFormPage_result2.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result2.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/feedback/FeedbackFormPage_result2.html
> index c1f54fc..da1bfe0 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result2.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackFormPage_result2.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackFormPage?1-2.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackFormPage?1-2.-form">
>  <span wicket:id="feedback"><wicket:border>
>                 <wicket:body>
>         <input type="text" wicket:id="input" value=""
> name="feedback:feedback_body:input">
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/feedback/FeedbackIndicatorFormPage_result1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result1.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/feedback/
> FeedbackIndicatorFormPage_result1.html
> index 3fe836e..75a5b8e 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result1.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackIndicatorFormPage?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackIndicatorFormPage?0-1.-form">
>         <input type="text" wicket:id="input" value="" name="input">
>
>  </form>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/feedback/FeedbackIndicatorFormPage_result2.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result2.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/feedback/
> FeedbackIndicatorFormPage_result2.html
> index e1fe256..fa72247 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result2.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/feedback/FeedbackIndicatorFormPage_result2.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackIndicatorFormPage?1-2.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.form.feedback.
> FeedbackIndicatorFormPage?1-2.-form">
>         <input type="text" wicket:id="input" value="" name="input">
>  <span wicket:id="feedback"><wicket:panel><span
> style="color:red;">*</span></wicket:panel></span>
>  </form>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/pageWithParameters_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/pageWithParameters_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/pageWithParameters_expected.html
> index 665c8b4..f4a5d2b 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/pageWithParameters_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/pageWithParameters_expected.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -       <form wicket:id="formpost" id="formpost1" method="post"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage?0-1.-
> formpost&amp;first=foo&amp;second=bar"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="formpost1_hf_0" id="formpost1_hf_0" /></div></form>
> -       <form wicket:id="formget" id="formget2" method="get"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="formget2_hf_0"
> id="formget2_hf_0" /><input type="hidden" name="0-1.-formget" value=""
> /><input type="hidden" name="first" value="foo" /><input type="hidden"
> name="second" value="bar" /></div></form>
> +       <form wicket:id="formpost" id="formpost1" method="post"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage?0-1.-
> formpost&amp;first=foo&amp;second=bar"></form>
> +       <form wicket:id="formget" id="formget2" method="get"
> action="./org.apache.wicket.markup.html.form.FormMethodTestPage"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="0-1.-formget"
> value="" /><input type="hidden" name="first" value="foo" /><input
> type="hidden" name="second" value="bar" /></div></form>
>  </body>
>  </html>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/
> html/form/validation/HomePage1_ExpectedResult.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/validation/HomePage1_ExpectedResult.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/form/validation/HomePage1_
> ExpectedResult.html
> index 561b878..eb9e737 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/validation/HomePage1_ExpectedResult.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/
> form/validation/HomePage1_ExpectedResult.html
> @@ -8,7 +8,7 @@
>          <span wicket:id="message">If you see this message wicket is
> properly configured and running</span>
>
>          <div wicket:id="bug"><wicket:panel>
> -       <form wicket:id="form" id="form8" method="post"
> action="./org.apache.wicket.markup.html.form.validation.HomePage1?1-1.-bug-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form8_hf_0"
> id="form8_hf_0" /></div>
> +       <form wicket:id="form" id="form8" method="post"
> action="./org.apache.wicket.markup.html.form.validation.
> HomePage1?1-1.-bug-form">
>           <div wicket:id="border"><wicket:border>
>                 <wicket:body>
>             <input wicket:id="name" value="" name="border:border_body:name"
> />
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1-1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-1-1.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1-1.html
> index 0f555fc..46bebb1 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1-1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1-1.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?2-3.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?2-3.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>        <input wicket:id="input" type="checkbox" name="input"/>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-1.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-
> 1.html
> index 260cccf..beac698 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-1.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?1-2.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?1-2.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>
>    </form>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2-1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-2-1.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2-1.html
> index 870e4db..e113306 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2-1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2-1.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?2-3.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?2-3.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>
>    </form>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-2.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-
> 2.html
> index f9831a7..4b1d415 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-2.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?4-5.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?4-5.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>
>    </form>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-1.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-3-1.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-1.html
> index 2dbd5c6..215e6e6 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-1.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-1.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?5-6.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?5-6.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-2.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-3-2.html
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-2.html
> index 6f8a775..3b89d1b 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-2.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3-2.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?6-7.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?6-7.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>        <input wicket:id="input" type="checkbox" name="input"/>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-3.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-
> 3.html
> index f88c265..5aed66f 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-3.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?3-4.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?3-4.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-4.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9-4.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-
> 4.html
> index b359886..9081a9d 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-4.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9-4.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?1-2.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?1-2.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>        <input wicket:id="input" type="checkbox" checked="checked"
> name="input"/>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/
> internal/EnclosurePageExpectedResult_9.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9.html
> index bf42d8d..601179f 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/
> EnclosurePageExpectedResult_9.html
> @@ -1,6 +1,6 @@
>  <html xmlns:wicket>
>  <body>
> -  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +  <form wicket:id="form" id="form1" method="post"
> action="./page?0-1.-form">
>      <!-- does Wicket behave different if the enclosure child is a
> FormComponent?? Needs testing -->
>      <wicket:enclosure child="label">
>        <input wicket:id="input" type="checkbox" name="input"/>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagNotVisibleWebPageResult.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagNotVisibleWebPageResult.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/tags/InputTagNotVisibleWebPageResult.html
> index f384cd4..b0f896d 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagNotVisibleWebPageResult.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagNotVisibleWebPageResult.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.tags.
> InputTagNotVisibleWebPage?0-1.-form"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.tags.
> InputTagNotVisibleWebPage?0-1.-form">
>
>  </form>
>  </body>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagVisibleWebPageResult.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagVisibleWebPageResult.html b/wicket-core/src/test/java/
> org/apache/wicket/markup/html/tags/InputTagVisibleWebPageResult.html
> index 59dfed5..cef08bc 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagVisibleWebPageResult.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/tags/
> InputTagVisibleWebPageResult.html
> @@ -1,6 +1,6 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.tags.InputTagVisibleWebPage?0-1.-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form1_hf_0"
> id="form1_hf_0" /></div>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.markup.html.tags.InputTagVisibleWebPage?0-1.-
> form">
>  <input wicket:id="input" type="text" value="" name="input">
>  </form>
>  </body>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-core/src/test/java/org/apache/wicket/stateless/
> StatelessPageWithForm_expected.html
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/
> StatelessPageWithForm_expected.html b/wicket-core/src/test/java/
> org/apache/wicket/stateless/StatelessPageWithForm_expected.html
> index 6360d02..88cce23 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/stateless/
> StatelessPageWithForm_expected.html
> +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/
> StatelessPageWithForm_expected.html
> @@ -1,5 +1,5 @@
>  <html>
>  <body>
> -<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.stateless.StatelessPageWithForm?-1.-
> form&amp;first=foo&amp;second=bar"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="form1_hf_0" id="form1_hf_0" /></div></form>
> +<form wicket:id="form" id="form1" method="post"
> action="./org.apache.wicket.stateless.StatelessPageWithForm?-1.-
> form&amp;first=foo&amp;second=bar"></form>
>  </body>
>  </html>
> \ No newline at end of file
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 15573cab/wicket-datetime/src/test/java/org/apache/wicket/
> extensions/yui/calendar/DatesPage1_ExpectedResult.html
> ----------------------------------------------------------------------
> diff --git a/wicket-datetime/src/test/java/org/apache/wicket/
> extensions/yui/calendar/DatesPage1_ExpectedResult.html
> b/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/
> DatesPage1_ExpectedResult.html
> index 3d867e5..d365128 100644
> --- a/wicket-datetime/src/test/java/org/apache/wicket/
> extensions/yui/calendar/DatesPage1_ExpectedResult.html
> +++ b/wicket-datetime/src/test/java/org/apache/wicket/
> extensions/yui/calendar/DatesPage1_ExpectedResult.html
> @@ -105,8 +105,8 @@ Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_
> BOUND);
>  </script>
>  </head>
>  <body>
> -<form wicket:id="localeForm" id="localeForm2" method="post"
> action="./org.apache.wicket.extensions.yui.calendar.
> DatesPage1?0-1.-localeForm"><div style="width:0px;height:0px;
> position:absolute;left:-100px;top:-100px;overflow:hidden"><input
> type="hidden" name="localeForm2_hf_0" id="localeForm2_hf_0" /></div>
> -<p><select wicket:id="localeSelect" onchange="document.
> getElementById(&#039;localeForm2_hf_0&#039;).value=
> &#039;./org.apache.wicket.extensions.yui.calendar.
> DatesPage1?0-1.-localeForm-localeSelect&#039;;document.
> getElementById(&#039;localeForm2&#039;).submit();" name="localeSelect">
> +<form wicket:id="localeForm" id="localeForm2" method="post"
> action="./org.apache.wicket.extensions.yui.calendar.
> DatesPage1?0-1.-localeForm">
> +<p><select wicket:id="localeSelect" onchange="var f =
> document.getElementById(&#039;localeForm2&#039;);
> f.action=&#039;./org.apache.wicket.extensions.yui.
> calendar.DatesPage1?0-1.-localeForm-localeSelect&#039;;f.submit();"
> name="localeSelect">
>  <option value="0">cinese (Cina) (Chinese (China))</option>
>  <option value="1">cinese (Cina) (Chinese (China))</option>
>  <option value="2">cinese (Cina) (Chinese (China))</option>
> @@ -130,7 +130,7 @@ Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_
> BOUND);
>  </select> [<a href="./org.apache.wicket.extensions.yui.calendar.
> DatesPage1?0-1.-localeForm-localeUSLink" wicket:id="localeUSLink">set to
> english</a>]</p>
>  </form>
>  <p>
> -<form wicket:id="form" id="form3" method="post"
> action="./org.apache.wicket.extensions.yui.calendar.DatesPage1?0-1.-form"><div
> style="width:0px;height:0px;position:absolute;left:-100px;
> top:-100px;overflow:hidden"><input type="hidden" name="form3_hf_0"
> id="form3_hf_0" /></div><input type="text" wicket:id="dateTextField"
> value="xx/xx/xx" name="dateTextField" id="dateTextField1"/>
> +<form wicket:id="form" id="form3" method="post"
> action="./org.apache.wicket.extensions.yui.calendar.DatesPage1?0-1.-form"><input
> type="text" wicket:id="dateTextField" value="xx/xx/xx" name="dateTextField"
> id="dateTextField1"/>
>  <span class="yui-skin-sam">&nbsp;<span 
> style="display:none;position:absolute;z-index:
> 99999;" id="dateTextField1Dp"></span><img style="cursor: pointer; border:
> none;" id="dateTextField1Icon" src="../resource/org.apache.
> wicket.extensions.yui.calendar.DatePicker/icon1.gif" alt=""
> title=""/></span> <input type="submit" value="submit" /></form>
>  </p>
>  <p>
>
>

Reply via email to