首页 > 解决方案 > 版本更新后删除了 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();

标签: javawicket

解决方案


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


推荐阅读