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);
+ }
}
/**