Eclipse Scout Neon on 值集验证检测循环

Eclipse Scout Neon on value set validation detect loop

我想在当前字段更改时验证字段与其他字段的依赖关系。

基本想法是,如果我有字段 A 和字段 B,C,D,E,... 并且这些字段上有一些复杂的依赖关系图,我想这样解决:

我的问题是,如果我在

中触发此事件
 @Override
protected void execChangedValue() {
    // trigger export
    // trigger server validation
    // trigger import
}

我明白了

2016-06-03 13:31:28,468 WARN  scout-model-thread-22 o.e.s.rt.client.ui.form.fields.AbstractValueField - Loop detection in ...$FieldA with value 101191 [m4042 @   ]
java.lang.Exception: null

如何解决这个问题?

我什至有一个问题,如果返回错误,我想中止导入并重新设置旧值。

 @Override
protected void execChangedValue() {
    // trigger export
    // trigger server validation
    if (error) {
        setValueWithoutTrigger(oldValue)
    } else {
        // trigger import
    }
}

什么是oldValue没关系,可以为null。 (所以错误时重置值)。 方法 setValueWithoutTriggersetValue() 相同,但在设置值之前调用 this.setValueChangeTriggerEnabled(false);

我知道它可以以某种方式完成,因为我在 BSI 代码中看到了类似的功能。

无法在同一字段的execChangedValue 方法中设置字段的值。框架在这里检测到循环。

您可以改为使用方法 execValidateValue,如下所示

@Override
protected String execValidateValue(String rawValue) throws ProcessingException {
    MyFormData formData = new MyFormData();
    exportFormData(formData);
    formData = sendFormDataToServerAndDoValidation();
    importBCDE(formData);
    return formData.getTest().getValue();
  }

方法 importBCDE 会设置字段 B、C、D 和 E,但不会设置字段 A。