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"); + }); + } });
