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
                -->

Reply via email to