gpt4 book ai didi

java - Wicket 6 至 8 升级 : RadioGroup. onSelectionChanged() 替换

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:06 26 4
gpt4 key购买 nike

我们继承了使用 Wicket 6 的大型代码库,其中我们有一个首选联系类型选择(短信、电子邮件等)的 RadioGroup。选择 SMS 的 Radio 后,电话号码的 TextField 就会可见,电子邮件等也是如此。

这是通过向每个 Radio 添加“onclick”事件的 AjaxEventBehavior 来实现的。 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 中删除,并且我们找不到任何有关可能替代方案的文档。通过阅读 Wicket 6 JavaDocs 的字里行间,我感觉到 onSelectionChanged() 方法甚至不应该手动调用,因为文档仅以被动形式声明“在选择新选项时调用。”。

我有疑问:

  1. 我们的祖先是否通过手动调用 onSelectionChanged() 滥用了 Wicket API?
  2. Wicket 8 中是否有 RadioGroup.onSelectionChanged() 的替代品?
  3. 实现第一段中描述的功能的正确方法是什么?

最佳答案

您需要咨询迁移页面: https://cwiki.apache.org/confluence/x/E7OnAw

新方法是:

// 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);
}
});

关于java - Wicket 6 至 8 升级 : RadioGroup. onSelectionChanged() 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60542299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com