You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/11/18 09:23:58 UTC

wicket git commit: WICKET-5753 It is impossible to determine the form submitting component's inputName when AjaxFormSubmitBehavior is used

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 73a384435 -> f0a1a0683


WICKET-5753 It is impossible to determine the form submitting component's inputName when AjaxFormSubmitBehavior is used

(cherry picked from commit 2f04133d67883c263482d83fbcccc83013477b7f)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f0a1a068
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f0a1a068
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f0a1a068

Branch: refs/heads/wicket-6.x
Commit: f0a1a068323575efc5198071224ec667e2dd5307
Parents: 73a3844
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Nov 18 10:08:27 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Nov 18 10:09:55 2014 +0200

----------------------------------------------------------------------
 .../ajax/form/AjaxFormSubmitBehavior.java       | 98 +++++++++++++-------
 1 file changed, 65 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f0a1a068/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
index 9bedac6..6c4f57b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
@@ -84,7 +84,6 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 	}
 
 	/**
-	 * 
 	 * @return Form that will be submitted by this behavior
 	 */
 	public final Form<?> getForm()
@@ -105,6 +104,21 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 	}
 
 	/**
+	 * @return the bound component if it implements {@link org.apache.wicket.markup.html.form.IFormSubmittingComponent},
+	 * otherwise - {@code null}
+	 */
+	private IFormSubmittingComponent getFormSubmittingComponent()
+	{
+		IFormSubmittingComponent submittingComponent = null;
+		Component component = getComponent();
+		if (component instanceof IFormSubmittingComponent)
+		{
+			submittingComponent = ((IFormSubmittingComponent) component);
+		}
+		return submittingComponent;
+	}
+
+	/**
 	 * Finds form that will be submitted
 	 * 
 	 * @return form to submit or {@code null} if none found
@@ -143,51 +157,69 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 			attributes.setMethod(Method.POST);
 		}
 
-		if (getComponent() instanceof IFormSubmittingComponent)
+		IFormSubmittingComponent submittingComponent = getFormSubmittingComponent();
+		if (submittingComponent != null)
 		{
-			String submittingComponentName = ((IFormSubmittingComponent)getComponent()).getInputName();
+			String submittingComponentName = submittingComponent.getInputName();
 			attributes.setSubmittingComponentName(submittingComponentName);
 		}
 	}
 
-	/**
-	 * @see org.apache.wicket.ajax.AjaxEventBehavior#onEvent(org.apache.wicket.ajax.AjaxRequestTarget)
-	 */
 	@Override
 	protected void onEvent(final AjaxRequestTarget target)
 	{
-		getForm().getRootForm().onFormSubmitted(new IFormSubmitter()
+		getForm().getRootForm().onFormSubmitted(new AjaxFormSubmitter(this, target));
+	}
+
+	/**
+	 * A publicly reachable class that allows to introspect the submitter, e.g. to
+	 * check what is the input name of the submitting component if there is such.
+	 */
+	public static class AjaxFormSubmitter implements IFormSubmitter
+	{
+		private final AjaxFormSubmitBehavior submitBehavior;
+		private final AjaxRequestTarget target;
+
+		private AjaxFormSubmitter(AjaxFormSubmitBehavior submitBehavior, AjaxRequestTarget target)
 		{
-			@Override
-			public Form<?> getForm()
-			{
-				return AjaxFormSubmitBehavior.this.getForm();
-			}
+			this.submitBehavior = submitBehavior;
+			this.target = target;
+		}
 
-			@Override
-			public boolean getDefaultFormProcessing()
-			{
-				return AjaxFormSubmitBehavior.this.getDefaultProcessing();
-			}
+		@Override
+		public Form<?> getForm()
+		{
+			return submitBehavior.getForm();
+		}
 
-			@Override
-			public void onError()
-			{
-				AjaxFormSubmitBehavior.this.onError(target);
-			}
+		public IFormSubmittingComponent getFormSubmittingComponent()
+		{
+			return submitBehavior.getFormSubmittingComponent();
+		}
 
-			@Override
-			public void onSubmit()
-			{
-				AjaxFormSubmitBehavior.this.onSubmit(target);
-			}
+		@Override
+		public boolean getDefaultFormProcessing()
+		{
+			return submitBehavior.getDefaultProcessing();
+		}
 
-			@Override
-			public void onAfterSubmit()
-			{
-				AjaxFormSubmitBehavior.this.onAfterSubmit(target);
-			}
-		});
+		@Override
+		public void onError()
+		{
+			submitBehavior.onError(target);
+		}
+
+		@Override
+		public void onSubmit()
+		{
+			submitBehavior.onSubmit(target);
+		}
+
+		@Override
+		public void onAfterSubmit()
+		{
+			submitBehavior.onAfterSubmit(target);
+		}
 	}
 
 	/**