2016-03-22 4 views
0

Ich habe abstrakte Gruppen-Box. Innerhalb dieser Gruppenbox habe ich ein intelligentes Feld, und bei Änderung möchte ich einige andere Felder in Form füllen.Eclipse Scout Neon-Import-Formular Daten in abstrakten Feld Feldwechsel

Probleme sind:

  • auf abstrakten Gruppenfeld können neue Box Formulardaten nicht erstellt werden.
  • wenn ich versuche, Formulardaten zu importieren, weil Importformular Daten namens SetValue-Schleife erkannt wird.

Mein Versuch war abstrakt Gruppenfeld zu ändern, wie dies zu „normalen Gruppenfeld“ und Sollwerte:

@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); 
} 

Dieser Ansatz funktioniert tatsächlich, und die Daten füllen, aber ich bekomme

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] 

Was ist der richtige Ansatz, um mit diesem Fall umzugehen?

Ich weiß, dass ich immer nur die DTO-Objekt und Sollwerte in Client bekommen könnte, aber das ist nicht das, was ich haben möchte ...

Antwort

1

Lösung für Problem 1

Eine abstrakte Methode AbstractCarSelectionBoxData createNewBoxData(); in AbstractCarSelectionBox und sie in den entsprechenden Unterklassen implementieren die neuen Formulardaten zurückkehrt, z.B. new MyFormDataContainingCarSelectionBox().getCarSelectionBox();.

Lösung für Problem 2

Bevor die Formulardaten zu importieren, rufen Sie setValueSet(false) auf dem Feld, das die execChangedValue ausgelöst, z.B. formData.getMySmartfield().setValueSet(false). Dadurch wird sichergestellt, dass es nicht in das Formular importiert wird, daher sollte keine Schleifenerkennung stattfinden.

+0

Dies ist eine große Hilfe. setValueSet (false) -Methode ist sehr gut zu wissen. –

0

ich denke, die importFormFieldData auf this.getParentField() die execChangedValue auf der Smart-Trigger Feld erneut.

Versuchen Sie, die aktualisierten Felder in einem eigenen Gruppenfeld zu speichern und importieren Sie die Daten nur in dieses Gruppenfeld, oder führen Sie den Import manuell für jedes Feld durch, das Sie aktualisieren möchten.

Verwandte Themen