Eclipse Scout Neon on 值集验证检测循环
Eclipse Scout Neon on value set validation detect loop
我想在当前字段更改时验证字段与其他字段的依赖关系。
基本想法是,如果我有字段 A
和字段 B,C,D,E,...
并且这些字段上有一些复杂的依赖关系图,我想这样解决:
- 当我设置值A导出表单数据时(表单当前状态)
- 表单数据发送到scout服务器
- 在 scout 上计算并解析服务器依赖关系图(我们按顺序获取列表)
- 调用
setters
有序列表中 "fix" 形成数据 的字段
- 最后导入表单数据。
我的问题是,如果我在
中触发此事件
@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。 (所以错误时重置值)。
方法 setValueWithoutTrigger
与 setValue()
相同,但在设置值之前调用 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。
我想在当前字段更改时验证字段与其他字段的依赖关系。
基本想法是,如果我有字段 A
和字段 B,C,D,E,...
并且这些字段上有一些复杂的依赖关系图,我想这样解决:
- 当我设置值A导出表单数据时(表单当前状态)
- 表单数据发送到scout服务器
- 在 scout 上计算并解析服务器依赖关系图(我们按顺序获取列表)
- 调用
setters
有序列表中 "fix" 形成数据 的字段
- 最后导入表单数据。
我的问题是,如果我在
中触发此事件 @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。 (所以错误时重置值)。
方法 setValueWithoutTrigger
与 setValue()
相同,但在设置值之前调用 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。