Вы ищете PropertyModel
класс . Wicket PropertyModel
s может позволить вам связать значение компонента непосредственно со значением в вашем источнике. Пример кода Javadoc:
Person person = getSomePerson();
add(new Label("myLabel", new PropertyModel(person, "name"));
Когда этот ярлык добавляется на страницу, он отображает значение в person.name
без дополнительной работы с вашей стороны.
Ваш пример кода автомобиля уже использует PropertyModel
s, поэтому все, что вам нужно сделать, это изменить цель. Например:
car theCar = new car();
final DropDownChoice<String> makes = new DropDownChoice<String>("makes",
new PropertyModel<String>(theCar, "name"), makeChoices);
final DropDownChoice<String> models = new DropDownChoice<String>("models",
new PropertyModel<String>(theCar, "model"), modelChoices);
Это установит значение theCar.name
в раскрывающемся списке марок, а значение theCar.model
- в раскрывающемся списке моделей.
EDIT:
Да, можно установить значения с помощью кнопки, а не автоматически. Для этого не используйте PropertyModel
s. Вместо этого создайте новый объект Wicket Button
и переопределите его метод onSubmit()
с помощью кода, подобного
theCar.setName(makes.getValue());
theCar.setModel(models.getValue());
Или, если вы хотите сделать это AJAXically, поместите это в метод AjaxFormChoiceComponentUpdatingBehavior
onUpdate()
.