You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by cm...@apache.org on 2012/06/22 14:39:57 UTC
[2/2] git commit: WICKET-4575 before/after submit
WICKET-4575 before/after submit
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e0286bad
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e0286bad
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e0286bad
Branch: refs/heads/wicket-1.5.x
Commit: e0286bada4ba7142e039f3176210e86bd9c78544
Parents: d274f68
Author: Carl-Eric Menzel <cm...@wicketbuch.de>
Authored: Fri Jun 22 14:31:03 2012 +0200
Committer: Carl-Eric Menzel <cm...@wicketbuch.de>
Committed: Fri Jun 22 14:31:03 2012 +0200
----------------------------------------------------------------------
.../wicket/ajax/form/AjaxFormSubmitBehavior.java | 44 ++++++++-
.../wicket/ajax/markup/html/form/AjaxButton.java | 51 ++++++++++-
.../ajax/markup/html/form/AjaxFallbackButton.java | 72 ++++++++++++++-
.../ajax/markup/html/form/AjaxSubmitLink.java | 60 +++++++++++-
.../markup/html/form/AbstractSubmitLink.java | 7 +-
.../org/apache/wicket/markup/html/form/Button.java | 34 ++++++-
.../org/apache/wicket/markup/html/form/Form.java | 15 +++-
.../html/form/IBeforeAndAfterFormSubmitter.java | 38 ++++++++
.../wicket/markup/html/form/IFormSubmitter.java | 9 ++-
.../apache/wicket/markup/html/form/SubmitLink.java | 21 ++++-
.../html/form/FormSubmitOrderTest$TestPage.html | 7 ++
.../markup/html/form/FormSubmitOrderTest.java | 67 ++++++++++++++
.../markup/html/form/submitlink/HomePage.java | 44 ++++++++-
.../markup/html/form/submitlink/TestHomePage.java | 13 +++
14 files changed, 452 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/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 6532843..27d988e 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
@@ -21,7 +21,7 @@ import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IFormSubmitter;
+import org.apache.wicket.markup.html.form.IBeforeAndAfterFormSubmitter;
import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -155,7 +155,7 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
@Override
protected void onEvent(final AjaxRequestTarget target)
{
- getForm().getRootForm().onFormSubmitted(new IFormSubmitter()
+ getForm().getRootForm().onFormSubmitted(new IBeforeAndAfterFormSubmitter()
{
public Form<?> getForm()
{
@@ -176,23 +176,57 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
{
AjaxFormSubmitBehavior.this.onError(target);
}
+
+ public void onSubmitBeforeForm()
+ {
+ AjaxFormSubmitBehavior.this.onSubmitBeforeForm(target);
+ }
+
+ public void onSubmitAfterForm()
+ {
+ AjaxFormSubmitBehavior.this.onSubmitAfterForm(target);
+ }
});
}
/**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>after</em> the form's onSubmit method.
+ */
+ protected void onSubmitAfterForm(AjaxRequestTarget target)
+ {
+ }
+
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>before</em> the form's onSubmit method.
+ */
+ protected void onSubmitBeforeForm(AjaxRequestTarget target)
+ {
+ }
+
+ /**
* Listener method that is invoked after the form has been submitted and processed without
* errors
*
* @param target
+ * @deprecated Will be removed in 6.0. Use {@link #onSubmitBeforeForm(AjaxRequestTarget)} and/or
+ * link #onSubmitAfterForm(AjaxRequestTarget)} instead.
*/
- protected abstract void onSubmit(AjaxRequestTarget target);
+ @Deprecated
+ protected void onSubmit(AjaxRequestTarget target)
+ {
+ }
/**
- * Listener method invoked when the form has been processed and errors occurred
+ * Listener method invoked when the form has been processed and errors occurred. This method is
+ * called <em>before</em> {@link Form#onError()}.
*
* @param target
*/
- protected abstract void onError(AjaxRequestTarget target);
+ protected void onError(AjaxRequestTarget target)
+ {
+ }
/**
* @see org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#getPreconditionScript()
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
index c113db1..dcffebb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
@@ -23,6 +23,7 @@ import org.apache.wicket.ajax.IAjaxCallDecorator;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IFormSubmitter;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.string.AppendingStringBuffer;
import org.apache.wicket.util.string.Strings;
@@ -105,6 +106,26 @@ public abstract class AjaxButton extends Button
/**
*
+ * @see org.apache.wicket.ajax.form.AjaxFormSubmitBehavior#onSubmit(org.apache.wicket.ajax.AjaxRequestTarget)
+ */
+ @Override
+ protected void onSubmitBeforeForm(AjaxRequestTarget target)
+ {
+ AjaxButton.this.onSubmitBeforeForm(target, AjaxButton.this.getForm());
+ }
+
+ /**
+ *
+ * @see org.apache.wicket.ajax.form.AjaxFormSubmitBehavior#onSubmit(org.apache.wicket.ajax.AjaxRequestTarget)
+ */
+ @Override
+ protected void onSubmitAfterForm(AjaxRequestTarget target)
+ {
+ AjaxButton.this.onSubmitAfterForm(target, AjaxButton.this.getForm());
+ }
+
+ /**
+ *
* @see org.apache.wicket.ajax.form.AjaxFormSubmitBehavior#onError(org.apache.wicket.ajax.AjaxRequestTarget)
*/
@Override
@@ -203,8 +224,32 @@ public abstract class AjaxButton extends Button
*
* @param target
* @param form
+ * @deprecated see {@link IFormSubmitter#onSubmit()}
+ */
+ @Deprecated
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+
+ /**
+ * Listener method invoked on form submit with no errors
+ *
+ * @param target
+ * @param form
*/
- protected abstract void onSubmit(AjaxRequestTarget target, Form<?> form);
+ protected void onSubmitBeforeForm(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+
+ /**
+ * Listener method invoked on form submit with no errors
+ *
+ * @param target
+ * @param form
+ */
+ protected void onSubmitAfterForm(AjaxRequestTarget target, Form<?> form)
+ {
+ }
/**
* Listener method invoked on form submit with errors
@@ -212,5 +257,7 @@ public abstract class AjaxButton extends Button
* @param target
* @param form
*/
- protected abstract void onError(AjaxRequestTarget target, Form<?> form);
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
index 4a54fb8..e945f9a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
@@ -23,6 +23,7 @@ import org.apache.wicket.ajax.IAjaxCallDecorator;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IFormSubmitter;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -77,6 +78,19 @@ public abstract class AjaxFallbackButton extends Button
}
@Override
+ protected void onSubmitBeforeForm(AjaxRequestTarget target)
+ {
+ AjaxFallbackButton.this.onSubmitBeforeForm(target,
+ AjaxFallbackButton.this.getForm());
+ }
+
+ @Override
+ protected void onSubmitAfterForm(AjaxRequestTarget target)
+ {
+ AjaxFallbackButton.this.onSubmitAfterForm(target, AjaxFallbackButton.this.getForm());
+ }
+
+ @Override
protected void onError(AjaxRequestTarget target)
{
AjaxFallbackButton.this.onError(target, AjaxFallbackButton.this.getForm());
@@ -114,7 +128,9 @@ public abstract class AjaxFallbackButton extends Button
* @param target
* @param form
*/
- protected abstract void onError(AjaxRequestTarget target, Form<?> form);
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ }
/**
* @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#onSubmit()
@@ -129,6 +145,30 @@ public abstract class AjaxFallbackButton extends Button
}
/**
+ * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#onSubmit()
+ */
+ @Override
+ public final void onSubmitBeforeForm()
+ {
+ if (AjaxRequestTarget.get() == null)
+ {
+ onSubmitBeforeForm(null, getForm());
+ }
+ }
+
+ /**
+ * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#onSubmit()
+ */
+ @Override
+ public final void onSubmitAfterForm()
+ {
+ if (AjaxRequestTarget.get() == null)
+ {
+ onSubmitAfterForm(null, getForm());
+ }
+ }
+
+ /**
*
* @see org.apache.wicket.markup.html.form.Button#getForm()
*/
@@ -145,8 +185,36 @@ public abstract class AjaxFallbackButton extends Button
* @param target
* ajax target if this linked was invoked using ajax, null otherwise
* @param form
+ * @deprecated see {@link IFormSubmitter#onSubmit()}
+ */
+ @Deprecated
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form)
+ {
+ }
+
+ /**
+ * Callback for the onClick event. If ajax failed and this event was generated via a normal
+ * submission, the target argument will be null
+ *
+ * @param target
+ * ajax target if this linked was invoked using ajax, null otherwise
+ * @param form
*/
- protected abstract void onSubmit(final AjaxRequestTarget target, final Form<?> form);
+ protected void onSubmitBeforeForm(final AjaxRequestTarget target, final Form<?> form)
+ {
+ }
+
+ /**
+ * Callback for the onClick event. If ajax failed and this event was generated via a normal
+ * submission, the target argument will be null
+ *
+ * @param target
+ * ajax target if this linked was invoked using ajax, null otherwise
+ * @param form
+ */
+ protected void onSubmitAfterForm(final AjaxRequestTarget target, final Form<?> form)
+ {
+ }
/**
*
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
index 89993b1..2176b43 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
@@ -22,6 +22,7 @@ import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.form.AbstractSubmitLink;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IFormSubmitter;
import org.apache.wicket.util.string.AppendingStringBuffer;
/**
@@ -107,11 +108,39 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink
{
return AjaxSubmitLink.this.getDefaultFormProcessing();
}
+
+ @Override
+ protected void onSubmitAfterForm(AjaxRequestTarget target)
+ {
+ AjaxSubmitLink.this.onSubmitAfterForm(target, getForm());
+ }
+
+ @Override
+ protected void onSubmitBeforeForm(AjaxRequestTarget target)
+ {
+ AjaxSubmitLink.this.onSubmitBeforeForm(target, getForm());
+ }
});
}
/**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>before</em> the form's onSubmit method.
+ */
+ protected void onSubmitBeforeForm(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>after</em> the form's onSubmit method.
+ */
+ protected void onSubmitAfterForm(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+
+ /**
* Returns the {@link IAjaxCallDecorator} that will be used to modify the generated javascript.
* This is the preferred way of changing the javascript in the onclick handler
*
@@ -162,19 +191,42 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink
}
/**
+ * Use {@link #onSubmitAfterForm(AjaxRequestTarget, Form)} instead.
+ */
+ public final void onSubmitAfterForm()
+ {
+ }
+
+ /**
+ * Use {@link #onSubmitBeforeForm(AjaxRequestTarget, Form)} instead.
+ */
+ public final void onSubmitBeforeForm()
+ {
+ }
+
+ /**
* Listener method invoked on form submit
*
* @param target
* @param form
+ * @deprecated This method will be removed in 6.0. Use
+ * {@link #onSubmitBeforeForm(AjaxRequestTarget, Form)} and/or
+ * {@link #onSubmitAfterForm(AjaxRequestTarget, Form)} instead. See
+ * {@link IFormSubmitter#onSubmit()}.
*/
- protected abstract void onSubmit(AjaxRequestTarget target, Form<?> form);
+ @Deprecated
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ }
/**
- * Listener method invoked on form submit with errors
+ * Listener method invoked on form submit with errors. This method is called <em>before</em>
+ * {@link Form#onError()}.
*
* @param target
* @param form
*/
- protected abstract void onError(AjaxRequestTarget target, Form<?> form);
-
+ protected void onError(AjaxRequestTarget target, Form<?> form)
+ {
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSubmitLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSubmitLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSubmitLink.java
index e13070c..c25c49f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSubmitLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSubmitLink.java
@@ -25,10 +25,13 @@ import org.apache.wicket.model.IModel;
* @author Matej Knopp
*
*/
-public abstract class AbstractSubmitLink extends AbstractLink implements IFormSubmittingComponent
+public abstract class AbstractSubmitLink extends AbstractLink
+ implements
+ IFormSubmittingComponent,
+ IBeforeAndAfterFormSubmitter
{
/**
- *
+ *
*/
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
index 7419563..0b01935 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
@@ -48,7 +48,11 @@ import org.apache.wicket.model.IModel;
* @author Eelco Hillenius
*
*/
-public class Button extends FormComponent<String> implements IFormSubmittingComponent
+public class Button extends FormComponent<String>
+ implements
+ IFormSubmitter,
+ IFormSubmittingComponent,
+ IBeforeAndAfterFormSubmitter
{
private static final long serialVersionUID = 1L;
@@ -104,7 +108,7 @@ public class Button extends FormComponent<String> implements IFormSubmittingComp
/**
* Override to not throw exception if there is no parent form.
- *
+ *
* @return the parent form or {@code null}
*/
@Override
@@ -212,8 +216,13 @@ public class Button extends FormComponent<String> implements IFormSubmittingComp
/**
* Override this method to provide special submit handling in a multi-button form. It is called
- * whenever the user clicks this particular button, except if validation fails.
+ * whenever the user clicks this particular button, except if validation fails. This method will
+ * be called <em>before</em> {@link Form#onSubmit()}.
+ *
+ * @deprecated This method will be removed in 6.0. Use {@link #onSubmitBeforeForm()} and/or
+ * {@link #onSubmitAfterForm()} instead. See {@link IFormSubmitter#onSubmit()}.
*/
+ @Deprecated
public void onSubmit()
{
}
@@ -223,6 +232,23 @@ public class Button extends FormComponent<String> implements IFormSubmittingComp
*/
public void onError()
{
+ }
+ /**
+ * Override this method to provide special submit handling in a multi-button form. It is called
+ * whenever the user clicks this particular button, except if validation fails. This method will
+ * be called <em>before</em> {@link Form#onSubmit()}.
+ */
+ public void onSubmitBeforeForm()
+ {
+ }
+
+ /**
+ * Override this method to provide special submit handling in a multi-button form. It is called
+ * whenever the user clicks this particular button, except if validation fails. This method will
+ * be called <em>after</em> {@link Form#onSubmit()}.
+ */
+ public void onSubmitAfterForm()
+ {
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/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 8ad2571..c74fff7 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
@@ -1217,7 +1217,11 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
if (submittingComponent != null)
{
// invoke submit on component
- submittingComponent.onSubmit();
+ if (submittingComponent instanceof IBeforeAndAfterFormSubmitter)
+ {
+ ((IBeforeAndAfterFormSubmitter)submittingComponent).onSubmitBeforeForm();
+ }
+ submittingComponent.onSubmit(); // remove this for 6.0
}
// invoke Form#onSubmit(..) going from innermost to outermost
@@ -1232,6 +1236,15 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
}
}
}, new ClassVisitFilter(Form.class));
+
+
+ if (submittingComponent != null)
+ {
+ if (submittingComponent instanceof IBeforeAndAfterFormSubmitter)
+ {
+ ((IBeforeAndAfterFormSubmitter)submittingComponent).onSubmitAfterForm();
+ }
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IBeforeAndAfterFormSubmitter.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IBeforeAndAfterFormSubmitter.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IBeforeAndAfterFormSubmitter.java
new file mode 100644
index 0000000..0c49c74
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IBeforeAndAfterFormSubmitter.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.form;
+
+/**
+ * Temporary interface to provide new methods for 1.5. Will be removed in 6.0, where these methods
+ * are in IFormSubmitter.
+ *
+ * @author Carl-Eric Menzel
+ */
+public interface IBeforeAndAfterFormSubmitter extends IFormSubmitter
+{
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>before</em> the form's onSubmit method.
+ */
+ void onSubmitBeforeForm();
+
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>after</em> the form's onSubmit method.
+ */
+ void onSubmitAfterForm();
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitter.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitter.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitter.java
index aad0487..6460b01 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitter.java
@@ -43,13 +43,18 @@ public interface IFormSubmitter
/**
* Override this method to provide special submit handling in a multi-button form. It is called
- * whenever the user clicks this particular button.
+ * whenever the user clicks this particular button, <em>before</em> {@link Form#onSubmit()}.
+ *
+ * @deprecated Use {@link IBeforeAndAfterFormSubmitter#onSubmitAfterForm()} and/or
+ * {@link IBeforeAndAfterFormSubmitter#onSubmitBeforeForm()} instead. This method
+ * will be removed in 6.0.
*/
+ @Deprecated
void onSubmit();
/**
* Method that is invoked when form processing fails; for example, when there are validation
- * errors.
+ * errors. This method will be called <em>before</em> {@link Form#onError()}.
*/
void onError();
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/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 6be64fe..db69f28 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
@@ -45,7 +45,7 @@ import org.apache.wicket.model.IModel;
* + mod.getValue1());
* };
* });
- *
+ *
* <form wicket:id="linkForm" >
* <input wicket:id="value1" type="text" size="30"/>
* <a wicket:id="link1">Press link1 to submit</a>
@@ -225,8 +225,10 @@ public class SubmitLink extends AbstractSubmitLink
}
/**
+ * @deprecated
* @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#onSubmit()
*/
+ @Deprecated
public void onSubmit()
{
}
@@ -238,4 +240,19 @@ public class SubmitLink extends AbstractSubmitLink
{
}
-}
\ No newline at end of file
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>after</em> the form's onSubmit method.
+ */
+ public void onSubmitAfterForm()
+ {
+ }
+
+ /**
+ * Override this method to provide special submit handling in a multi-button form. This method
+ * will be called <em>before</em> the form's onSubmit method.
+ */
+ public void onSubmitBeforeForm()
+ {
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest$TestPage.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest$TestPage.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest$TestPage.html
new file mode 100644
index 0000000..518b266
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest$TestPage.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<form wicket:id="form">
+<input type="submit" wicket:id="button"/>
+</form>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest.java
new file mode 100644
index 0000000..23fd812
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormSubmitOrderTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.form;
+
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.markup.html.WebPage;
+import org.junit.Test;
+
+public class FormSubmitOrderTest extends WicketTestCase
+{
+ public static class TestPage extends WebPage
+ {
+ String result = "";
+
+ public TestPage()
+ {
+ Form form = new Form("form")
+ {
+ @Override
+ protected void onSubmit()
+ {
+ super.onSubmit();
+ result += "form";
+ }
+ };
+ this.add(form);
+ form.add(new Button("button")
+ {
+ @Override
+ public void onSubmitBeforeForm()
+ {
+ super.onSubmit();
+ result += "before";
+ }
+
+ @Override
+ public void onSubmitAfterForm()
+ {
+ super.onSubmit();
+ result += "after";
+ }
+ });
+ }
+ }
+
+ @Test
+ public void submitOrder() throws Exception
+ {
+ TestPage page = tester.startPage(TestPage.class);
+ tester.newFormTester("form").submit("button");
+ assertEquals("beforeformafter", page.result);
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/HomePage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/HomePage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/HomePage.java
index 406b3a9..9f8c4ed 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/HomePage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/HomePage.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.markup.html.form.submitlink;
+import static junit.framework.Assert.*;
+
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.SubmitLink;
@@ -27,10 +29,12 @@ import org.apache.wicket.model.PropertyModel;
public class HomePage extends WebPage
{
boolean submitted = false;
- boolean submittedViaLink = false;
+ boolean submittedViaLinkDeprecated = false;
+ boolean submittedViaLinkBefore = false;
+ boolean submittedViaLinkAfter = false;
String text;
/**
- *
+ *
*/
private static final long serialVersionUID = 1L;
@@ -43,7 +47,7 @@ public class HomePage extends WebPage
Form<Void> form = new Form<Void>("form")
{
/**
- *
+ *
*/
private static final long serialVersionUID = 1L;
@@ -58,14 +62,32 @@ public class HomePage extends WebPage
{
/**
- *
+ *
*/
private static final long serialVersionUID = 1L;
@Override
+ public void onSubmitBeforeForm()
+ {
+ submittedViaLinkBefore = true;
+ assertFalse("before must be the first!", submittedViaLinkAfter);
+ assertFalse("before must be the first!", submittedViaLinkDeprecated);
+ }
+
+ @Override
public void onSubmit()
{
- submittedViaLink = true;
+ assertTrue("before must have been called!", submittedViaLinkBefore);
+ submittedViaLinkDeprecated = true;
+ assertFalse("after must not yet have been called", submittedViaLinkAfter);
+ }
+
+ @Override
+ public void onSubmitAfterForm()
+ {
+ assertTrue("before must have been called!", submittedViaLinkBefore);
+ assertTrue("onsubmit must have been called!", submittedViaLinkDeprecated);
+ submittedViaLinkAfter = true;
}
});
@@ -102,6 +124,16 @@ public class HomePage extends WebPage
*/
public boolean isSubmittedViaLink()
{
- return submittedViaLink;
+ return submittedViaLinkDeprecated;
+ }
+
+ boolean isSubmittedViaLinkBefore()
+ {
+ return submittedViaLinkBefore;
+ }
+
+ boolean isSubmittedViaLinkAfter()
+ {
+ return submittedViaLinkAfter;
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e0286bad/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
index 9a2308c..c2b5639 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/submitlink/TestHomePage.java
@@ -36,6 +36,11 @@ public class TestHomePage extends WicketTestCase
assertEquals("Hello", home.getText());
assertTrue("Form.onSubmit() has not been called!", home.isSubmitted());
assertTrue("SubmitLink.onSubmit() has not been called!", home.isSubmittedViaLink());
+ assertTrue("SubmitLink.onSubmitBeforeForm() has not been called!",
+ home.isSubmittedViaLinkBefore());
+ assertTrue("SubmitLink.onSubmitAfterForm() has not been called!",
+ home.isSubmittedViaLinkAfter());
+
}
/**
@@ -53,6 +58,10 @@ public class TestHomePage extends WicketTestCase
assertEquals("Hello", home.getText());
assertTrue("Form.onSubmit() has not been called!", home.isSubmitted());
assertTrue("SubmitLink.onSubmit() has not been called!", home.isSubmittedViaLink());
+ assertTrue("SubmitLink.onSubmitBeforeForm() has not been called!",
+ home.isSubmittedViaLinkBefore());
+ assertTrue("SubmitLink.onSubmitAfterForm() has not been called!",
+ home.isSubmittedViaLinkAfter());
}
/**
@@ -69,6 +78,10 @@ public class TestHomePage extends WicketTestCase
assertEquals("Hello", home.getText());
assertTrue("Form.onSubmit() has not been called!", home.isSubmitted());
assertTrue("SubmitLink.onSubmit() has not been called!", home.isSubmittedViaLink());
+ assertTrue("SubmitLink.onSubmitBeforeForm() has not been called!",
+ home.isSubmittedViaLinkBefore());
+ assertTrue("SubmitLink.onSubmitAfterForm() has not been called!",
+ home.isSubmittedViaLinkAfter());
}
}