java - 版本更新后删除了 Wicket DropDownChoice onSelectionChanged 方法
问题描述
我被指定为开发人员,负责将我们的旧 wicket 应用程序从 6.x 升级到 8.x。我正在一一解决多个错误,但是(因为我从未使用过检票口)一个我无法继续前进。
在 6.x 版本中,它具有覆盖 onSelectionChanged 的 DropDownChoice,它在 8.x 版本中不再存在,我无法找到有关弃用的任何信息(通过 7.x 版本......)所以看起来他们只是删除了它..我在这里有什么选择?上述代码:
booleanType = new DropDownChoice<BooleanType>("booleanType", new PropertyModel<>(this, "selectedBooleanType"), booleanTypes) {
@Override
protected void onSelectionChanged(BooleanType newSelection) {
super.onSelectionChanged(newSelection);
selectedBooleanType = newSelection;
}
};
编辑:我在Wicket 6 到 8 升级后才发现的类似问题 :RadioGroup.onSelectionChanged() 替换
对于那些想知道如何更新值的人,因为它不再作为方法的参数出现:
selectedType = (YourChoiceType) super.getFormComponent().getDefaultModelObject();
解决方案
wantOnSelectionChangedNotifications
搬到FormComponentUpdatingBehavior
. 从变更日志:
// Wicket 7.x
new CheckBox("id", model) {
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(Boolean newSelection) {
// do something, page will be rerendered;
}
};
// Wicket 8.x
new CheckBox("id", model)
.add(new FormComponentUpdatingBehavior() {
protected void onUpdate() {
// do something, page will be rerendered;
}
protected void onError(RuntimeException ex) {
super.onError(ex);
}
});
(该示例使用 aCheckBox
但它也适用于DropDownChoice
)。
另一个例子参见wiki。