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 2021/02/25 18:18:30 UTC
[wicket] 02/02: WICKET-6868 ajax submit allow trigger submit on form
This is an automated email from the ASF dual-hosted git repository.
svenmeier pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 24c67b33b383147191ac9a60564da7b01ac2360e
Author: Sven Meier <sv...@apache.org>
AuthorDate: Sat Feb 20 00:47:34 2021 +0100
WICKET-6868 ajax submit allow trigger submit on form
---
.../wicket/ajax/form/AjaxFormSubmitBehavior.java | 26 ++++++++++++++++++++++
.../wicket/ajax/markup/html/form/AjaxButton.java | 17 ++++++++++++++
.../ajax/markup/html/form/AjaxFallbackButton.java | 17 ++++++++++++++
.../examples/ajax/builtin/FileUploadPage.java | 9 ++++++++
4 files changed, 69 insertions(+)
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 0caca83..23137b1 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
@@ -19,6 +19,7 @@ package org.apache.wicket.ajax.form;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
import org.apache.wicket.markup.html.form.Button;
@@ -139,6 +140,17 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
}
}
+ /**
+ * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
+ * False by default.
+ *
+ * @return true if <code>submit</code> should be triggered, false otherwise
+ */
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return false;
+ }
+
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
@@ -165,6 +177,20 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
String submittingComponentName = submittingComponent.getInputName();
attributes.setSubmittingComponentName(submittingComponentName);
}
+
+ if (shouldTriggerJavaScriptSubmitEvent()) {
+ attributes.getAjaxCallListeners().add(new AjaxCallListener() {
+ @Override
+ public CharSequence getPrecondition(Component component)
+ {
+ return String.format("var p, f = jQuery('#%s'), fn = function(e) { p = e.isDefaultPrevented(); e.preventDefault(); };" //
+ + "f.on('submit',fn);" //
+ + "f.trigger('submit');" //
+ + "f.off('submit',fn);" //
+ + "return !p;", form.getMarkupId());
+ }
+ });
+ }
}
@Override
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 b0b5139..1f460ac 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
@@ -135,6 +135,12 @@ public abstract class AjaxButton extends Button
AjaxButton.this.updateAjaxAttributes(attributes);
}
+
+ @Override
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return AjaxButton.this.shouldTriggerJavaScriptSubmitEvent();
+ }
@Override
public boolean getDefaultProcessing()
@@ -150,6 +156,17 @@ public abstract class AjaxButton extends Button
};
}
+ /**
+ * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
+ * False by default.
+ *
+ * @return true if <code>submit</code> should be triggered, false otherwise
+ */
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return false;
+ }
+
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
}
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 03ca2a2..62627ff 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
@@ -116,9 +116,26 @@ public abstract class AjaxFallbackButton extends Button
{
return AjaxFallbackButton.this.getStatelessHint();
}
+
+ @Override
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return AjaxFallbackButton.this.shouldTriggerJavaScriptSubmitEvent();
+ }
};
}
+ /**
+ * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
+ * False by default.
+ *
+ * @return true if <code>submit</code> should be triggered, false otherwise
+ */
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return false;
+ }
+
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
}
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index 598efee..c7f25fb 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -98,6 +98,15 @@ public class FileUploadPage extends BasePage
{
private static final long serialVersionUID = 1L;
+ /**
+ * Need to trigger submit to initiate progressbar.
+ */
+ @Override
+ protected boolean shouldTriggerJavaScriptSubmitEvent()
+ {
+ return true;
+ }
+
@Override
protected void onSubmit(AjaxRequestTarget target)
{