Hi, I'm using Wicket 6.14.0
I've got a form with many components including one which is a RadioGroup (with several Radio) and one which is a DropDownChoice, Both the RadioGroup // Radios and the DropDownChoice have been marked to get selection changed notifications with the RadioGroup#wantOnSelectionChangedNotifications() and the DropDownChoice#wantOnSelectionChangedNotifications() both returning true. My problem is that the DropDownChoice although it refreshes the *page does not* actually receive a notification via the onSelectionChanged(T) method whereas the RadioGroup *does* via the onSelectChanged(Object). I've looked at the code and noticed that when Wicket (6.14 in my case) writes out the onChange javascript the radio and the dropdown differ slightly: Here is the html code for both: Notably the radio sets a specific form element name "id28_hf_0" to the value (reference): ./antwerp.web.page.account.realtyadvert.publish.PublishRealtyAdvert?6-1.IOnChangeListener-publishRealtyAdvert-form-advertEditPanel-operationType and the Dropdown sets the same form element name: ../../page?6-1.IOnChangeListener-publishRealtyAdvert-form-advertEditPanel-propertyType So the first one (of the radio group) works ok and finds the right ListenerInterfaceRequestHandler and calls its onSelectionChanged() methodThe second one (from the dropdown) does not find any ListenerInterfaceRequestHandler. The code from DropDownChoice that creates the onchange attribute value is: // we do not want relative URL here, because it will be used by// Form#dispatchEventCharSequence url = urlFor(new ListenerInterfaceRequestHandler( new PageAndComponentProvider(getPage(), this, new PageParameters()), IOnChangeListener.INTERFACE));Form<?> form = findParent(Form.class);if (form != null){ tag.put("onchange", form.getJsForInterfaceUrl(url.toString()));}else{ tag.put("onchange", "window.location.href='" + url + (url.toString().indexOf('?') > -1 ? "&" : "?") + getInputName() + "=' + this.options[this.selectedIndex].value;");} The code from Radio // url that points to this components IOnChangeListener methodCharSequence url = group.urlFor(IOnChangeListener.INTERFACE, new PageParameters());Form<?> form = group.findParent(Form.class);if (form != null){ tag.put("onclick", form.getJsForInterfaceUrl(url));}else{ // NOTE: do not encode the url as that would give invalid JavaScript tag.put("onclick", "window.location.href='" + url + (url.toString().indexOf('?') > -1 ? "&" : "?") + group.getInputName() + "=' + this.value;");} The page on which the form is on is not mapped its is just redirected to from another mapped page, I think this may be the problem and I should explicitly map the page with the form so that both urlFor calls return a defined page. I just tried that mapping the page to "my-advert-form-page.html" and it now works fine. So back to my original question, is this a bug in wicket, or am I just using the framework incorrectly. Cheers Simon -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/wantsOnSelectionChangedNotifications-RadioGroup-Radio-vs-DropDownChoice-tp4665927.html Sent from the Users forum mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org