Repository: wicket Updated Branches: refs/heads/master 273127d8c -> 2cda29611
WICKET-5594 AjaxButton #onSubmit() #onError() intricacies Make non-Ajax hooks final and prevent non-Ajax submit Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2cda2961 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2cda2961 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2cda2961 Branch: refs/heads/master Commit: 2cda29611dcd78db1e6e2563034577fd86bd80a8 Parents: 273127d Author: svenmeier <[email protected]> Authored: Tue May 20 13:19:03 2014 +0200 Committer: svenmeier <[email protected]> Committed: Tue May 20 13:19:03 2014 +0200 ---------------------------------------------------------------------- .../ajax/markup/html/form/AjaxButton.java | 36 ++++++++++++++++++++ .../ajax/markup/html/form/AjaxButtonTest.java | 2 ++ 2 files changed, 38 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/2cda2961/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 eae85a6..88153c8 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 @@ -19,9 +19,12 @@ package org.apache.wicket.ajax.markup.html.form; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A button that submits the form via ajax. @@ -34,6 +37,8 @@ public abstract class AjaxButton extends Button { private static final long serialVersionUID = 1L; + private static final Logger logger = LoggerFactory.getLogger(AjaxButton.class); + private final Form<?> form; /** @@ -160,6 +165,37 @@ public abstract class AjaxButton extends Button } } + @Override + protected void onComponentTag(ComponentTag tag) + { + // WICKET-5594 prevent non-Ajax submit + tag.put("type", "button"); + + super.onComponentTag(tag); + } + + /** + * This method is never called. + * + * @see #onSubmit(AjaxRequestTarget, Form) + */ + @Override + public final void onSubmit() + { + logger.warn("unexpected invocation of #onSubmit()"); + } + + /** + * This method is never called. + * + * @see #onError(AjaxRequestTarget, Form) + */ + @Override + public final void onError() + { + logger.warn("unexpected invocation of #onError()"); + } + /** * Listener method invoked on form submit with no errors, before {@link Form#onSubmit()}. * http://git-wip-us.apache.org/repos/asf/wicket/blob/2cda2961/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java index 09e8fa8..3a0f39f 100644 --- a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/form/AjaxButtonTest.java @@ -34,6 +34,8 @@ public class AjaxButtonTest extends WicketTestCase tester.startPage(HomePage.class); // assert rendered page class tester.assertRenderedPage(HomePage.class); + // assert button type for AjaxButtons, WICKET-5594 + assertEquals("button", tester.getTagById("submit2").getAttribute("type")); // assert rendered label component tester.assertLabel("message", "If you see this message wicket is properly configured and running");
