2016-03-22 23 views
0

我有抽象组框。在这个组合框里面我有一个聪明的领域,在变化的时候我想填写一些其他领域的形式。Eclipse侦察霓虹灯导入窗体中的数据抽象框中的字段变化

的问题是:

  • 抽象组框新的箱形数据不能被创建。
  • 如果我尝试导入表单数据,因为检测到名为setValue循环的导入表单数据。

我的尝试是改变抽象组框“正常组框”和设定值如下:

@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对象和设定值,但是这不是我想有什么...

回答

1

解问题1

AbstractCarSelectionBoxAbstractCarSelectionBoxData createNewBoxData(); 创建一个抽象方法和实现它在相应的子类返回新形式的数据,例如new MyFormDataContainingCarSelectionBox().getCarSelectionBox();

解问题2

在导入之前的形式的数据,调用setValueSet(false)上触发execChangedValue领域,例如formData.getMySmartfield().setValueSet(false)。 这将确保它不会被导入到窗体中,因此不会发生循环检测。

+0

这是一个巨大的帮助。 setValueSet(false)方法非常了解。 –

0

我觉得this.getParentField()importFormFieldData触发对智能的execChangedValue领域再次。

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