Updated Branches: refs/heads/master b80e225f1 -> 18855d876
WICKET-4236 Use JQuery as a backing library for Wicket's JavaScript code Fix serialization of multi values <select>. Update the test cases to the new serialization format - as jQuery.serializeArray(). Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/18855d87 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/18855d87 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/18855d87 Branch: refs/heads/master Commit: 18855d8766b453bdbf51584533ceda3d020e1e9c Parents: b80e225 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed Feb 22 12:18:16 2012 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed Feb 22 12:18:16 2012 +0100 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-ajax-jquery.js | 10 +- wicket-core/src/test/js/form.js | 116 ++++++--------- 2 files changed, 53 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/18855d87/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 24eae3d..8fdbeeb 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 @@ -1163,7 +1163,15 @@ var $select = jQuery(select); if ($select.length > 0 && $select.prop('disabled') === false) { var name = $select.attr('name'); - result.push( { name: name, value: $select.val() } ); + var values = $select.val(); + if (jQuery.isArray(values)) { + for (var v = 0; v < values.length; v++) { + var value = values[v]; + result.push( { name: name, value: value } ); + } + } else { + result.push( { name: name, value: values } ); + } } } return result; http://git-wip-us.apache.org/repos/asf/wicket/blob/18855d87/wicket-core/src/test/js/form.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/form.js b/wicket-core/src/test/js/form.js index b41bb5e..1700120 100644 --- a/wicket-core/src/test/js/form.js +++ b/wicket-core/src/test/js/form.js @@ -17,35 +17,6 @@ jQuery(document).ready(function() { - /** - * Extends oldObject with the properties from newObject. - * If there is already a property with the same name then the - * values are collected in an array - * - * @param oldObject {Object} the object to extend - * @param newObject {Object} the object to extend from - * @returns {Object} the object with all properties - */ - var extend = function (oldObject, newObject) { - - for (var prop in newObject) { - - if (!oldObject[prop]) { - oldObject[prop] = newObject[prop]; - } - else if (jQuery.isArray(oldObject[prop])) { - oldObject[prop].push(newObject[prop]); - } - else { - oldObject[prop] = [ oldObject[prop], newObject[prop] ]; - } - } - - return oldObject; - } - - var existingId = 'testElement'; - module("encode"); test("Wicket.Form.encode ", function() { @@ -82,42 +53,45 @@ jQuery(document).ready(function() { test('Wicket.Form.serializeInput - input element', function() { expect(1); - var queryString = {}; + var actual = []; jQuery('#testForm input').each(function() { var serialized = Wicket.Form.serializeInput(this); - queryString = extend(queryString, serialized); + actual = actual.concat(serialized); }); - var expected = { - "textInput": "textValue", - "textUTFInput": "неÑо на бÑлгаÑÑки", - "checkBoxInput1": "cbValue1", - "checkBoxInput3": "cbValue3", - "radioInput": "radioValue1", - "emailInput": "[email protected]", - "urlInput": "http://example.com", - "searchInput": "wicket", - "rangeInput": "67", - "numberInput": "16", - "colorInput": "123456" - }; - deepEqual(queryString, expected); + var expected = [ + { name: "textInput", value: "textValue" }, + { name: "textUTFInput", value: "неÑо на бÑлгаÑÑки" }, + { name: "checkBoxInput1", value: "cbValue1" }, + { name: "checkBoxInput3", value: "cbValue3" }, + { name: "radioInput", value: "radioValue1" }, + { name: "emailInput", value: "[email protected]" }, + { name: "urlInput", value: "http://example.com" }, + { name: "searchInput", value: "wicket" }, + { name: "rangeInput", value: "67" }, + { name: "numberInput", value: "16" }, + { name: "colorInput", value: "123456" } + ]; + deepEqual(actual, expected); }); test('Wicket.Form.serializeInput - textarea element', function() { expect(1); - var queryString = {}; + var actual = []; jQuery('#testForm textarea').each(function() { var serialized = Wicket.Form.serializeInput(this); - queryString = extend(queryString, serialized); + actual = actual.concat(serialized); }); - var expected = { - "textArea": "some text" - }; - deepEqual(queryString, expected); + var expected = [ + { + name: "textArea", + value: "some text" + } + ]; + deepEqual(actual, expected); }); module('Wicket.Form.serializeElement'); @@ -129,31 +103,29 @@ jQuery(document).ready(function() { expect(1); - var queryString = {}; + var actual = []; jQuery('input, textarea, select', jQuery('#testForm')).each(function() { var serialized = Wicket.Form.serializeElement(this); - queryString = extend(queryString, serialized); + actual = actual.concat(serialized); }); - var expected = { - "textInput": "textValue", - "checkBoxInput1": "cbValue1", - "checkBoxInput3": "cbValue3", - "radioInput": "radioValue1", - "emailInput": "[email protected]", - "urlInput": "http://example.com", - "searchInput": "wicket", - "rangeInput": "67", - "numberInput": "16", - "colorInput": "123456", - "multipleSelect": [ - "0", - "2" - ], - "select": "0", - "textArea": "some text" - }; - deepEqual(queryString, expected); + var expected = [ + { name: "textInput", value: "textValue" }, + { name: "checkBoxInput1", value: "cbValue1" }, + { name: "checkBoxInput3", value: "cbValue3" }, + { name: "radioInput", value: "radioValue1" }, + { name: "emailInput", value: "[email protected]" }, + { name: "urlInput", value: "http://example.com" }, + { name: "searchInput", value: "wicket" }, + { name: "rangeInput", value: "67" }, + { name: "numberInput", value: "16" }, + { name: "colorInput", value: "123456" }, + { name: "multipleSelect", value: "0" }, + { name: "multipleSelect", value: "2" }, + { name: "select", value: "0" }, + { name: "textArea", value: "some text" } + ]; + deepEqual(actual, expected); Wicket.Form.excludeFromAjaxSerialization = null; });
