...
when this page renders, the letter B will be selected because it is the object inside the drop down's model.
-Igor
\[Taken from a wicket-user posting - [Gwyn|User__Gwynevans] 22:57, 9 Apr 2006 (BST)\] Wiki Markup
Customizing the display of choices
...
Note |
---|
See also the JavaDoc for the ChoiceRenderer. Another example of custom ChoiceRenderer can be found in the DropDownChoice component reference in the Wicket Library. |
...
Code Block | ||||
---|---|---|---|---|
| ||||
<form wicket:id="form"> <select name="PhoneVendor" wicket:id="phoneVendor"></select> <select name="PhoneModel" wicket:id="phoneModel"></select> </form> |
...
Update with FormComponentUpdatingBehavior
Code Block |
---|
private DropDownChoice _phoneModelDDC; private MyModel _myModel = new MyModel(); public MyPage(PageParameters parameters) { Form form = new Form("form", new CompoundPropertyModel(_myModel)); add(form); addPhoneVendor(form); _phoneModelDDC = addPhoneModel(form); } private void addPhoneVendor(final Form form) { ArrayList phoneVendors = new ArrayList(getMySession().getTerminalVendors()); form.add(new DropDownChoice("phoneVendor", phoneVendors) { /** * Whether this component's onSelectionChanged event handler should called using * javascript if the selection changes. * * @return True if this component's onSelectionChanged event handler should * called using javascript if the selection changes */ protected boolean wantOnSelectionChangedNotifications() { return true; }.add(new FormComponentUpdatingBehavior() { /** * Called when a option is selected of a dropdown list that wants to be * notified of this event. * * @param newSelection The newly selected object of the backing model */ protected void onSelectionChangedonUpdate(final Object newSelection) { String phoneVendor = (String) newSelectiongetFormComponent().getModelObject(); _myModel.setPhoneModel(null); // Reset the phone model when the vendor changes phoneModelDDC.setChoices(getTerminalsByVendor(phoneVendor)); } })); } private DropDownChoice addPhoneModel(Form form) { List list = Collections.EMPTY_LIST; String phoneVendor = _myModel.getPhoneVendor(); if (phoneVendor != null) { list = getTerminalsByVendor(phoneVendor); } DropDownChoice phoneModelDDC = new DropDownChoice("phoneModel", list) { protected boolean wantOnSelectionChangedNotifications() { return true; } }; form.add(phoneModelDDC); return phoneModelDDC; } |
...
Update using Ajax
Code Block |
---|
private DropDownChoice _phoneVendorDDC, _phoneModelDDC; private MyModel _myModel = new MyModel(); public MyPage(PageParameters parameters) { Form form = new Form("form", new CompoundPropertyModel(_myModel)); add(form); _phoneVendorDDC = getPhoneVendorDDC(form); _phoneModelDDC = getPhoneModelDDC(form); form.add(_phoneVendorDDC); form.add(_phoneModelDDC); } private DropDownChoice getPhoneVendorDDC(final Form form) { ArrayList phoneVendors = new ArrayList(getMySession().getTerminalVendors()); DropDownChoice phoneVendorDDC = new DropDownChoice("phoneVendor", phoneVendors); // Add Ajax Behaviour... phoneVendorDDC.add(new AjaxFormComponentUpdatingBehavior("onchange") { protected void onUpdate(AjaxRequestTarget target) { // Reset the phone model dropdown when the vendor changes _myModel.setPhoneModel(null); _phoneModelDDC.setChoices(getTerminalsByVendor(_myModel.getPhoneVendor())); target.addComponent(_phoneModelDDC); } }); return phoneVendorDDC; } private DropDownChoice getPhoneModelDDC(Form form) { List list = Collections.EMPTY_LIST; String phoneVendor = _myModel.getPhoneVendor(); if (phoneVendor != null) { list = getTerminalsByVendor(phoneVendor); } DropDownChoice phoneModelDDC = new DropDownChoice("phoneModel", list); phoneModelDDC.setOutputMarkupId(true); // Needed for Ajax to update it return phoneModelDDC; } |
...
Binding Map example - Code sample binding a Map to DropDownChoice to persist an Integer using JPA.unmigrated-wiki-markup
\[Cássio Landim post in wordpress 12:00, 5 Feb 2010 (BST)\].