Eclipse侦察员霓虹灯导入表单数据在字段更改的抽象框中

时间:2016-03-22 09:28:20

标签: form-data eclipse-scout

我有抽象的组合框。在这个组合框中,我有智能领域,并且在变化时我想填写其他形式的字段。

问题是:

  • 在抽象组框中无法创建新的框表格数据。
  • 如果我尝试导入表单数据,则会检测到名为setValue loop的导入表单数据。

我的尝试是将抽象组框更改为"普通组框"并设置如下值:

@Override
protected void execChangedValue() {
    AbstractCarSelectionBoxData formData = new AbstractCarSelectionBoxData();
    FormDataUtility.exportFormData(this.getParentField(), formData);
    formData = BEANS.get(IOfferFormService.class).loadCarInformations(formData);
    FormDataUtility.importFormFieldData(this.getParentField(), formData, false, null, null);
}

这种方法实际上有效,并填充数据,但我得到了

2016-03-22 10:18:57,448 WARN  scout-model-thread-20 o.e.s.rt.client.ui.form.fields.AbstractValueField - Loop detection in com.sixt.leasing.scout.client.template.AbstractCarBox$CarTypeSixtField with value 279096 [m4042 @   ]
java.lang.Exception: null
         at org.eclipse.scout.rt.client.ui.form.fields.AbstractValueField.setValue(AbstractValueField.java:324) [org.eclipse.scout.rt.client-5.2.0.M5.jar:5.2.0.M5]
         at org.eclipse.scout.rt.client.ui.form.fields.AbstractValueField.importFormFieldData(AbstractValueField.java:219) [org.eclipse.scout.rt.client-5.2.0.M5.jar:5.2.0.M5]

处理此案件的正确方法是什么?

我知道我总是只能获得DTO对象并在客户端设置值,但这不是我想要的......

2 个答案:

答案 0 :(得分:1)

问题1的解决方案

创建抽象方法AbstractCarSelectionBoxData createNewBoxData();AbstractCarSelectionBox中并在相应的子类中实现它,返回新的表单数据,例如new MyFormDataContainingCarSelectionBox().getCarSelectionBox();

问题2的解决方案

在导入表单数据之前,请在触发setValueSet(false)的字段上调用execChangedValue,例如formData.getMySmartfield().setValueSet(false)。 这将确保它不会导入到表单中,因此不会发生循环检测。

答案 1 :(得分:0)

我认为SOPORTE 24/7 <BR> 123456 上的importFormFieldData会再次触发智能字段上的this.getParentField()

尝试在自己的组框中选中已更新的字段,并仅在此组框中导入数据,或者在要更新的每个字段上手动导入。