You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2017/04/04 15:38:12 UTC

[5/8] wicket git commit: WICKET-6348 use submitter instead of hidden field

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 <sv...@apache.org>
Authored: Tue Mar 28 21:34:56 2017 +0200
Committer: Sven Meier <sv...@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>