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

标签 java wicket wicket-6 wicket-8

我们继承了使用 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/

相关文章:

java - 如何保持插入顺序

java - Wicket:为 byte[] 创建 IResourceStream

html - WicketTester 如何获取组件的 html 输出?

java - 如何让 "Date"对象在每次调用时打印出不同的值?

java - 如何避免异常阴影?

java - 带 Wicket 的正则表达式 mountPage

java - Wicket - 使用复选框禁用/启用文本字段

java - WICKET - 使用 ajaxButton 刷新数据 View

java - 如何将 CSS 类添加到 AbstractColumn 表头

java - 客户端上的休息请求套接字超时 - Web 服务中的远程请求会发生什么情况