Repository: wicket Updated Branches: refs/heads/master 8f63eeee3 -> 0feec7b02
WICKET-6575 no Ajax requests on placeholder Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0feec7b0 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0feec7b0 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0feec7b0 Branch: refs/heads/master Commit: 0feec7b02638bcdf1df077ec2fe76ab221a42ba2 Parents: 8f63eee Author: Sven Meier <[email protected]> Authored: Wed Sep 5 13:19:16 2018 +0200 Committer: Sven Meier <[email protected]> Committed: Wed Sep 5 13:19:16 2018 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/wicket/Component.java | 16 +++-------- .../wicket/ajax/res/js/wicket-ajax-jquery.js | 28 ++++++++++++++------ .../org/apache/wicket/PlaceholderTagIdTest.java | 2 +- .../ajax/AjaxComponentVisibilityTest.java | 1 + .../markup/html/internal/AjaxEnclosureTest.java | 2 +- .../InlineEnclosurePageExpectedResult_1.html | 2 +- ...ithWicketMessagePage_invisible_expected.html | 2 +- .../markup/html/internal/TogglePageTest.java | 2 +- .../panel/InlinePanelPageExpectedResult_8.html | 2 +- .../wicket/queueing/ComponentQueueingTest.java | 2 +- wicket-core/src/test/js/ajax.js | 22 +++++++++++++++ wicket-core/src/test/js/all.html | 3 +++ 12 files changed, 57 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/main/java/org/apache/wicket/Component.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java index 3a7bae6..9f54710 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Component.java +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java @@ -2350,22 +2350,14 @@ public abstract class Component */ protected void renderPlaceholderTag(final ComponentTag tag, final Response response) { - String ns = Strings.isEmpty(tag.getNamespace()) ? null : tag.getNamespace() + ':'; + String name = Strings.isEmpty(tag.getNamespace()) ? tag.getName() : tag.getNamespace() + ':' + tag.getName(); response.write("<"); - if (ns != null) - { - response.write(ns); - } - response.write(tag.getName()); + response.write(name); response.write(" id=\""); response.write(getAjaxRegionMarkupId()); - response.write("\" style=\"display:none\"></"); - if (ns != null) - { - response.write(ns); - } - response.write(tag.getName()); + response.write("\" style=\"display:none\" data-wicket-placeholder></"); + response.write(name); response.write(">"); } http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js index 8bef057..5f64c0b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js @@ -557,6 +557,25 @@ }, /** + * Is an element still present for Ajax requests. + */ + _isPresent: function(id) { + if (isUndef(id)) { + // no id so no check whether present + return true; + } + + var element = Wicket.$(id); + if (isUndef(element)) { + // not present + return false; + } + + // present if no attributes at all or not a placeholder + return (!element.hasAttribute || !element.hasAttribute('data-wicket-placeholder')); + }, + + /** * Handles execution of Ajax calls. * * @param {Object} attrs - the Ajax request attributes configured at the server side @@ -579,14 +598,7 @@ // the precondition to use if there are no explicit ones defaultPrecondition = [ function (attributes) { - if (attributes.c) { - if (attributes.f) { - return Wicket.$$(attributes.c) && Wicket.$$(attributes.f); - } else { - return Wicket.$$(attributes.c); - } - } - return true; + return self._isPresent(attributes.c) && self._isPresent(attributes.f); }], // a context that brings the common data for the success/fialure/complete handlers http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/PlaceholderTagIdTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/PlaceholderTagIdTest.java b/wicket-core/src/test/java/org/apache/wicket/PlaceholderTagIdTest.java index 4b0550f..5eb072c 100644 --- a/wicket-core/src/test/java/org/apache/wicket/PlaceholderTagIdTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/PlaceholderTagIdTest.java @@ -42,7 +42,7 @@ public class PlaceholderTagIdTest extends WicketTestCase { tester.startPage(TestPage.class); - tester.assertContains("<form id=\"form1_region\" style=\"display:none\">"); + tester.assertContains("<form id=\"form1_region\" style=\"display:none\" data-wicket-placeholder>"); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java index 9f8f591..735b7a7 100644 --- a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java @@ -60,5 +60,6 @@ public class AjaxComponentVisibilityTest extends WicketTestCase assertTrue(tester.isComponentOnAjaxResponse(test2).wasFailed()); // test3 is in the ajax response because it renders a placeholder tag assertFalse(tester.isComponentOnAjaxResponse(test3).wasFailed()); + assertTrue(tester.getTagById(test3.getMarkupId()).hasAttribute("data-wicket-placeholder")); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosureTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosureTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosureTest.java index f9a0bac..cd72924 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosureTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosureTest.java @@ -40,7 +40,7 @@ public class AjaxEnclosureTest extends WicketTestCase { private final String inlineEnclosureIdPrefix = "wicket__InlineEnclosure_"; private final String inlineEnclosureHiddenPattern = "<div id=\"" + inlineEnclosureIdPrefix + - "\\w+\" style=\"display:none\"></div>"; + "\\w+\" style=\"display:none\" data-wicket-placeholder></div>"; private final String inlineEnclosureVisiblePattern = "<div id=\"" + inlineEnclosureIdPrefix + "\\w+\">"; http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosurePageExpectedResult_1.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosurePageExpectedResult_1.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosurePageExpectedResult_1.html index 98e8bf2..ff86786 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosurePageExpectedResult_1.html +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosurePageExpectedResult_1.html @@ -11,7 +11,7 @@ </table> </div> -<span id="wicket__InlineEnclosure__15719789313" style="display:none"></span> +<span id="wicket__InlineEnclosure__15719789313" style="display:none" data-wicket-placeholder></span> <div id="wicket__InlineEnclosure__15719789304"> <table> http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosureWithWicketMessagePage_invisible_expected.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosureWithWicketMessagePage_invisible_expected.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosureWithWicketMessagePage_invisible_expected.html index b6e11b5..f48e405 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosureWithWicketMessagePage_invisible_expected.html +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/InlineEnclosureWithWicketMessagePage_invisible_expected.html @@ -21,6 +21,6 @@ <title>Wicket 4520</title> </head> <body> - <div id="wicket__message__attr___4340036351" style="display:none"></div> + <div id="wicket__message__attr___4340036351" style="display:none" data-wicket-placeholder></div> </body> </html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/TogglePageTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/TogglePageTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/TogglePageTest.java index 0b96e00..0c10a51 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/TogglePageTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/TogglePageTest.java @@ -161,7 +161,7 @@ public class TogglePageTest extends WicketTestCase String inlineEnclosureIdPrefix = "wicket__InlineEnclosure_"; String inlineEnclosureHiddenPattern = "<tr id=\"" + inlineEnclosureIdPrefix + - "\\w+\" style=\"display:none\"></tr>"; + "\\w+\" style=\"display:none\" data-wicket-placeholder></tr>"; String inlineEnclosureVisiblePattern = "<tr bgcolor=\"red\" id=\"" + inlineEnclosureIdPrefix + "\\w+\">"; http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html index dd342eb..310b621 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html @@ -24,7 +24,7 @@ Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND); <div wicket:id="first"> <span wicket:id="number">0</span><br/> - <div id="nextContainer2" style="display:none"></div> + <div id="nextContainer2" style="display:none" data-wicket-placeholder></div> </div> <a wicket:id="add" id="add1" href="javascript:;">Add</a> http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java index 1e34590..2b4ea15 100644 --- a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java @@ -600,7 +600,7 @@ public class ComponentQueueingTest extends WicketTestCase a.setVisible(false); tester.startPage(p); - assertEquals("<div id=\"wicket__InlineEnclosure_20793898271\" style=\"display:none\"></div>", tester.getLastResponseAsString()); + assertEquals("<div id=\"wicket__InlineEnclosure_20793898271\" style=\"display:none\" data-wicket-placeholder></div>", tester.getLastResponseAsString()); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/js/ajax.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js index fb3af11..1cedf05 100644 --- a/wicket-core/src/test/js/ajax.js +++ b/wicket-core/src/test/js/ajax.js @@ -1534,5 +1534,27 @@ jQuery(document).ready(function() { }; execute(attrs); }); + + asyncTest('no ajax send on component placeholder', function() { + + expect(1); + + var attrs = { + u: 'data/ajax/componentPlaceholderId.xml', + c: 'componentPlaceholderId', + bsh: [ + function() { + ok(false, 'should not be sent'); + } + ], + dh: [ + function() { + start(); + ok('Done handler should be called'); + } + ] + }; + execute(attrs); + }); } }); http://git-wip-us.apache.org/repos/asf/wicket/blob/0feec7b0/wicket-core/src/test/js/all.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/all.html b/wicket-core/src/test/js/all.html index b5d8beb..afe2b6b 100644 --- a/wicket-core/src/test/js/all.html +++ b/wicket-core/src/test/js/all.html @@ -89,6 +89,9 @@ <ajax-response><component id="titleId"><![CDATA[<title id="titleId">new title</title>]]></component></ajax-response> </textarea> + <div id="componentPlaceholderId" data-wicket-placeholder> + </div> + <!-- DOM -->
