我想在当前字段发生变化时验证与其他字段的字段依赖关系。
基本的想法是,如果我有字段A
和字段B,C,D,E,...
并且这些字段上有一些复杂的依赖关系图,我希望它能解决这个问题:
setters
个字段我的问题是如果我在
中触发此事件 @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
无关紧要,它可能为空。 (因此错误时重置值)。
方法setValueWithoutTrigger
与setValue()
相同,但在设定值之前,它会调用this.setValueChangeTriggerEnabled(false);
我知道它可以以某种方式完成,因为我在BSI代码中看到了类似的功能。
答案 0 :(得分:0)
无法在同一字段的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.