DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
| 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;
}
|
...