手动调用DataBindingContext.updateModels()会导致UnsupportedOperation



我正在从2015年到2018-09更新RCP应用程序(支持32位JVM的最后一个版本(。

在一个包含多个部分的托管表单上,每个部分都有自己的DataBindingConext(dbc(,我使用主dbc中的AggregateValidationStatus来跟踪所有验证错误和警告消息。

在用户流中的某一点上,我需要显示所有验证错误和警告消息的列表。当我最初在2015年编写代码时,我想确保所有验证代码在显示给用户之前都已执行,所以我手动调用了masterDbc.updateModels()。毫无例外地执行了此操作。

现在手动调用masterDbc.updateModels()会在返回AggregateValidationStatus.calculate()时导致UnsupportedOperationException。请注意,在任何dbc(而不仅仅是主dbc(上手动调用updateModels()时都会发生此异常。

两个问题:

  1. 这是预期行为吗
  2. 假设用户必须选择一个菜单选项/按钮才能获得验证问题的摘要,我是否需要手动调用updateModels((

谢谢,Timothy

问题的解决方案是将targetToModelUpdateValueStrategyPOLICY_NEVER一起传递,这样就不会尝试更新只读AggregateValidationStatus

this.dbc.bindValue(WidgetProperties.text().observe(lblErrMsg),
new AggregateValidationStatus(this.dbc, AggregateValidationStatus.MAX_SEVERITY),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);

相关内容

  • 没有找到相关文章

最新更新