FS_LIST Database ohne Relation über API füllen
Author: tnoppeney
Publication Date: 8/28/2013 7:34
Hallo zusammen,
folgende Situation: wir haben ein Datenbankschema mit Tabellen A, B, C. In Tabellenformular A gibt es zwei FS_LIST Komponenten im Database Modus, die eine wird mit Einträgen ausTabelle B gefüllt und es gibt eine N:M Beziehung zwischen A und B. Die andere wird mit Einträge aus Tabelle C befüllt, es existiert allerdings keine Beziehung zwischen A und C. Funktioniert soweit auch.
Jetzt versuchen wir, Daten per API in Tabelle A zu schreiben und u.A. auch die beiden Listen zu befüllen. Folgenden Code verwenden wir dazu (value ist dabei ein Dataset aus der jeweils anderen Tabelle, dass wir der Liste hinzufügen wollen):
FormDataList formDataList = (FormDataList) formField.get();
FormDataProducer producer = formDataList.getProducer();
IdProvidingFormData newListEntry = ((ContentFormsProducer) producer).create(value.getEntity());
formDataList.add(newListEntry);
dataset.setFormData(formData);
Das Ganze funktioniert bei Liste A<->B auch ohne Probleme, bei Liste A<->C allerdings bleibt die Liste leer.
Wenn wir den Code folgendermaßen ändern...
FormDataList formDataList = (FormDataList) formField.get();
FormDataProducer producer = formDataList.getProducer();
IdProvidingFormData newListEntry = ((ContentFormsProducer) producer).create(value.getEntity());
formDataList.add(newListEntry);
Logging.logInfo(String.valueOf(formDataList.size()), Data.class);
dataset.setFormData(formData);
formData = dataset.getFormData();
formField = formData.get(lang, field);
formDataList = (FormDataList) formField.get();
Logging.logInfo(String.valueOf(formDataList.size()), Data.class);
... erhalten wir die Ausgaben 1 und 0, d.h. es landet etwas in der Liste, wird aber nicht persistiert. Wir führen in beiden Fällen nach dem Einfügen ein commit auf Tabelle A aus.
Was machen wir falsch? Prinzipiell müsste das doch der gleiche Ansatz sein, wie eine FS_LIST Database in einer Seiten- oder Absatzvorlage per API zu befüllen, also nichts wirklich "ungewöhnliches".
FS-Version: 5.0.211.55785
Viele Grüße
-
Author: StefanSchulz - 8/28/2013 13:36
Hm, Ok. Ich wundere mich gerade, warum das in dem ersten Fall funktioniert, da in dem Skript die Liste nicht zurückgeschrieben wird. Meines Erachtens fehlt dort mindestens mal ein formField.set(formDataList).
0
Please sign in to leave a comment.
Comments
1 comment