手动调用 DataBindingContext.updateModels() 导致 UnsupportedOperationException
Manually calling DataBindingContext.updateModels() causes UnsupportedOperationException
我正在将 RCP 应用程序从 2015 更新到 2018-09(支持 32 位 JVM 的最新版本)。
在包含多个部分的托管表单中,每个部分都有自己的 DataBindingConext
(dbc),我使用主 dbc 中的 AggregateValidationStatus
跟踪所有验证错误和警告消息。
在用户流程的某个时刻,我需要提供所有验证错误和警告消息的列表。当我最初在 2015 年编写代码时,我想 确保 所有验证代码在显示给用户之前已经执行,所以我手动调用 masterDbc.updateModels()
。此执行无一例外。
现在手动调用 masterDbc.updateModels()
会在 AggregateValidationStatus.calculate()
的 return 上产生 UnsupportedOperationException
。请注意,在任何 dbc 上手动调用 updateModels()
时会发生此异常,而不仅仅是主 dbc。
两个问题:
- 这是预期的行为吗?
- 鉴于用户必须选择菜单选项/按钮来获取验证问题的摘要,我是否需要手动调用 updateModels()?
谢谢,
蒂莫西
该问题的解决方案是使用 POLICY_NEVER
传入 targetToModel UpdateValueStrategy
,这样就不会尝试更新只读 AggregateValidationStatus
。
this.dbc.bindValue(WidgetProperties.text().observe(lblErrMsg),
new AggregateValidationStatus(this.dbc, AggregateValidationStatus.MAX_SEVERITY),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);
我正在将 RCP 应用程序从 2015 更新到 2018-09(支持 32 位 JVM 的最新版本)。
在包含多个部分的托管表单中,每个部分都有自己的 DataBindingConext
(dbc),我使用主 dbc 中的 AggregateValidationStatus
跟踪所有验证错误和警告消息。
在用户流程的某个时刻,我需要提供所有验证错误和警告消息的列表。当我最初在 2015 年编写代码时,我想 确保 所有验证代码在显示给用户之前已经执行,所以我手动调用 masterDbc.updateModels()
。此执行无一例外。
现在手动调用 masterDbc.updateModels()
会在 AggregateValidationStatus.calculate()
的 return 上产生 UnsupportedOperationException
。请注意,在任何 dbc 上手动调用 updateModels()
时会发生此异常,而不仅仅是主 dbc。
两个问题:
- 这是预期的行为吗?
- 鉴于用户必须选择菜单选项/按钮来获取验证问题的摘要,我是否需要手动调用 updateModels()?
谢谢, 蒂莫西
该问题的解决方案是使用 POLICY_NEVER
传入 targetToModel UpdateValueStrategy
,这样就不会尝试更新只读 AggregateValidationStatus
。
this.dbc.bindValue(WidgetProperties.text().observe(lblErrMsg),
new AggregateValidationStatus(this.dbc, AggregateValidationStatus.MAX_SEVERITY),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), null);