Мы унаследовали большую кодовую базу, которая использует Wicket 6, где у нас есть RadioGroup
предпочтительных типов контактов (SMS, электронная почта и т. Д. c). Когда выбран Radio
для SMS, TextField
для номера телефона становится видимым, то же самое для электронной почты и т. Д.
Это было реализовано путем добавления AjaxEventBehavior
для "onclick" событие каждому Radio
. Метод onEvent(AjaxRequestTarget)
вызывает RadioGroup.onSelectionChanged()
и обновляет видимость каждого TextField
:
radioSms = new Radio<>("sms", ...);
radioEmail = new Radio<>("email", ...);
radioGroup = new RadioGroup<>("contactGroup");
radioGroup.add(radioSms)
.add(radioEmail)
.add(textFieldSms)
.add(textFieldEmail);
radioSms.add(new OnClickEventBehavior());
radioEmail.add(new OnClickEventBehavior());
...
private class OnClickEventBehavior extends AjaxEventBehavior {
protected OnClickEventBehavior() {
super("onclick");
}
@Override
protected void onEvent(AjaxRequestTarget target) {
radioGroup.onSelectionChanged();
updateTextFieldVisibilities();
target.add(form);
}
}
Наши проблемы заключаются в том, что мы должны перейти на Wicket 8, метод onSelectionChanged()
был удален из RadioGroup
и мы не можем найти никакой документации о возможной замене. При чтении между строк JavaDocs Wicket 6 у меня возникает ощущение, что метод onSelectionChanged () даже не следует вызывать вручную, поскольку в документах указывается только « Вызывается при выборе новой опции. » в пассивная форма.
У меня есть вопросы:
- Наши предки злоупотребляли API Wicket, вызывая
onSelectionChanged()
вручную? - Есть ли замена для
RadioGroup.onSelectionChanged()
в Wicket 8 ? - Как правильно реализовать функциональность, описанную в первом абзаце?