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/25567ba1
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/25567ba1
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/25567ba1

Branch: refs/heads/master
Commit: 25567ba12214e2d32b27fec4789833a5d89cc59a
Parents: e7dcf2f
Author: Sven Meier <svenme...@apache.org>
Authored: Tue Mar 28 21:34:56 2017 +0200
Committer: Sven Meier <svenme...@apache.org>
Committed: Tue Apr 4 17:30:04 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/25567ba1/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/25567ba1/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();
+               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/25567ba1/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.AjaxFormChoiceComponentUpdatingBehavior;
 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/25567ba1/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/25567ba1/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 a90ccc4..6edd242 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)
        {
-               /*
-                * 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
@@ -1181,35 +1141,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().scheduleRequestHandlerAfterCurrent(handler);
-               }
-       }
-
-       /**
         * Visits the form's children FormComponents and inform them that a new 
user input is available
         * in the Request
         */
@@ -1712,29 +1643,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/25567ba1/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/25567ba1/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/25567ba1/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.AjaxFormChoiceComponentUpdatingBehavior;
 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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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/25567ba1/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