我们继承了一个使用 Wicket 6 的大型代码库,其中我们有一个RadioGroup
首选的联系类型选择(SMS、电子邮件等)。Radio
选择 SMS时TextField
,电话号码可见,电子邮件等相同。
这是通过向AjaxEventBehavior
每个Radio
. 该onEvent(AjaxRequestTarget)
方法调用RadioGroup.onSelectionChanged()
并更新 each 的可见性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
,我们找不到任何关于可能替换的文档。从 Wicket 6 JavaDocs 的两行之间阅读,我觉得甚至不应该手动调用 onSelectionChanged() 方法,因为文档仅以被动形式声明“在选择新选项时调用。 ”。
我有问题:
onSelectionChanged()
我们的祖先是否通过手动调用滥用了 Wicket API ?RadioGroup.onSelectionChanged()
Wicket 8 中有替代品吗?- 实现第一段中描述的功能的正确方法是什么?