Repository: wicket
Updated Branches:
  refs/heads/master 58d1894ae -> 46386490d


WICKET-5759 AjaxRequestAttributes extra parameters aren't properly handled in 
getCallbackFunction()


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/46386490
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/46386490
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/46386490

Branch: refs/heads/master
Commit: 46386490d633cf9a480c3550cb8190e87e983e7c
Parents: 58d1894
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Nov 24 20:23:45 2014 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Nov 24 20:25:07 2014 +0100

----------------------------------------------------------------------
 .../ajax/AbstractDefaultAjaxBehavior.java       |  2 +-
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    | 13 ++++++++--
 wicket-core/src/test/js/ajax.js                 | 26 ++++++++++++++++++++
 3 files changed, 38 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/46386490/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
index bc0989d..b41a247 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
@@ -525,7 +525,7 @@ public abstract class AbstractDefaultAjaxBehavior extends 
AbstractAjaxBehavior
                sb.append("var params = ").append(jsonArray).append(";\n");
                sb.append("attrs.").append(AjaxAttributeName.EXTRA_PARAMETERS)
                                .append(" = params.concat(attrs.")
-                               
.append(AjaxAttributeName.EXTRA_PARAMETERS).append(");\n");
+                               
.append(AjaxAttributeName.EXTRA_PARAMETERS).append(" || []);\n");
                sb.append("Wicket.Ajax.ajax(attrs);\n");
                return sb;
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/46386490/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 18ac187..1d5084e 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
@@ -484,8 +484,17 @@
                        }
                        else if (jQuery.isPlainObject(parameters)) {
                                for (name in parameters) {
-                                       value = parameters[name];
-                                       result.push({name: name, value: value});
+                                       if (name && 
parameters.hasOwnProperty(name)) {
+                                               value = parameters[name];
+                                               result.push({name: name, value: 
value});
+                                       }
+                               }
+                       }
+
+                       for (var i = 0; i < result.length; i++) {
+                               if (result[i] === null) {
+                                       result.splice(i, 1);
+                                       i--;
                                }
                        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/46386490/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 dd061a7..9e5aa54 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -1230,5 +1230,31 @@ jQuery(document).ready(function() {
 
                        Wicket.Ajax.ajax(attrs);
                });
+
+               /**
+                * 'null' values passed to _asParamArray() should be spliced
+                * See http://markmail.org/message/khuc2v37aakzyfth
+                * WICKET-5759
+                */
+               asyncTest('_asParamArray() should drop nulls.', function () {
+
+                       expect(1);
+
+                       var attrs = {
+                               e: 'event1',
+                               ep: [null, {name: "name", value: "value"}, 
null, null],
+                               bsh: [function(attributes) {
+                                       var ep = attributes.ep;
+                                       equal(1, ep.length, 'The null values in 
the extra parameters should be dropped');
+                                       start();
+                               }]
+                       };
+
+                       Wicket.Ajax.ajax(attrs);
+                       var target = jQuery(window);
+                       target.triggerHandler("event1");
+                       target.off("event1");
+               });
+
        }
 });

Reply via email to