This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-9.x by this push:
new e7f146145a WICKET-7055: AjaxEventBehavior onload event unstable (#589)
e7f146145a is described below
commit e7f146145af0f4c01f479cc33b4f7a663a0fa70e
Author: Martin Grigorov <[email protected]>
AuthorDate: Mon May 22 09:28:21 2023 +0300
WICKET-7055: AjaxEventBehavior onload event unstable (#589)
Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
(cherry picked from commit 285e661a5901b4e8613a5f61c0b4aea80a564182)
---
.../org/apache/wicket/ajax/AjaxEventBehavior.java | 10 +++-
.../org/apache/wicket/page/PartialPageUpdate.java | 2 +-
.../apache/wicket/ajax/AjaxEventBehaviorTest.java | 69 +++++++++++++++++++---
3 files changed, 71 insertions(+), 10 deletions(-)
diff --git
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
index e01b998e89..a067fa846a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
@@ -23,6 +23,7 @@ import org.apache.wicket.Component;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.head.OnLoadHeaderItem;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Checks;
import org.apache.wicket.util.string.Strings;
@@ -101,7 +102,14 @@ public abstract class AjaxEventBehavior extends
AbstractDefaultAjaxBehavior
{
CharSequence js = getCallbackScript(component);
-
response.render(OnDomReadyHeaderItem.forScript(js.toString()));
+ if ("load".equals(getEvent()))
+ {
+
response.render(OnLoadHeaderItem.forScript(js.toString()));
+ }
+ else
+ {
+
response.render(OnDomReadyHeaderItem.forScript(js.toString()));
+ }
}
}
diff --git
a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
index 5b179f1c88..f63c81986d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
@@ -198,7 +198,7 @@ public abstract class PartialPageUpdate
writeFooter(response, encoding);
} finally {
- if (header != null && originalHeaderContainer!= null) {
+ if (header != null && originalHeaderContainer != null) {
// restore a normal header
page.replace(originalHeaderContainer);
header = null;
diff --git
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxEventBehaviorTest.java
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxEventBehaviorTest.java
index 085bddaf62..b1211f0558 100644
---
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxEventBehaviorTest.java
+++
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxEventBehaviorTest.java
@@ -18,6 +18,7 @@ package org.apache.wicket.ajax;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.concurrent.atomic.AtomicInteger;
@@ -90,6 +91,27 @@ class AjaxEventBehaviorTest extends WicketTestCase
});
}
+ /**
+ * Tests execution of the 'load' event
+ * https://issues.apache.org/jira/browse/WICKET-7055
+ */
+ @Test
+ void executeLoadEvent()
+ {
+ AtomicInteger counter = new AtomicInteger(0);
+ LoadEventTestPage page = new LoadEventTestPage(counter);
+ tester.startPage(page);
+
+ assertEquals(0, counter.get());
+
+ // execute the first event
+ tester.executeAjaxEvent("comp", "load");
+ assertEquals(1, counter.get());
+ String responseAsString = tester.getLastResponseAsString();
+ System.err.println(responseAsString);
+
assertTrue(responseAsString.contains("function(){Wicket.Ajax.ajax({\"u\":\"./page?0-1.0-comp\",\"c\":\"comp1\",\"e\":\"load\"});"));
+ }
+
private static class EventNamesBehavior extends AjaxEventBehavior
{
/**
@@ -112,15 +134,10 @@ class AjaxEventBehaviorTest extends WicketTestCase
/**
* Test page for #executeSecondEvent()
*/
- private static class SecondEventTestPage extends WebPage
- implements
- IMarkupResourceStreamProvider
+ private static class SecondEventTestPage extends TestPage
{
private SecondEventTestPage(final AtomicInteger counter)
{
- WebComponent comp = new WebComponent("comp");
- add(comp);
-
// register a behavior that listens on two events
comp.add(new AjaxEventBehavior("eventOne eventTwo")
{
@@ -131,13 +148,49 @@ class AjaxEventBehaviorTest extends WicketTestCase
}
});
}
+ }
+
+ /**
+ * Test page for #executeLoadEvent()
+ */
+ private static class LoadEventTestPage extends TestPage
+ {
+ private LoadEventTestPage(final AtomicInteger counter)
+ {
+ super();
+
+ // register a behavior that listens on two events
+ comp.add(new AjaxEventBehavior("load")
+ {
+ @Override
+ protected void onEvent(AjaxRequestTarget target)
+ {
+ counter.incrementAndGet();
+ target.add(getComponent());
+ }
+ });
+ }
+ }
+
+ private static class TestPage extends WebPage
+ implements
+ IMarkupResourceStreamProvider
+ {
+ protected final WebComponent comp;
+
+ private TestPage()
+ {
+ comp = new WebComponent("comp");
+ comp.setOutputMarkupId(true);
+ add(comp);
+ }
@Override
public IResourceStream getMarkupResourceStream(MarkupContainer
container,
- Class<?> containerClass)
+
Class<?> containerClass)
{
return new StringResourceStream(
- "<html><body><span
wicket:id='comp'></span></body></html>");
+ "<html><body><span
wicket:id='comp'></span></body></html>");
}
}
}