Search the FirstSpirit Knowledge Base
Hallo,
Wir kopieren die Inhalte aus zwei FS List Eingabekomponenten zusammen. Das haben wir wie folgt umgesetzt:
formDataList_target = ... // FormDataList der zweiten Liste ( Liste in die geschrieben werden soll)
linkImpl_target = .... // Section aus der ersten Liste, soll in die zweite Liste kopiert werden
LinkFormsProducer producer = (LinkFormsProducer) formDataList_target.getProducer();
IdProvidingFormData newFormDataListElement = producer.create(((LinkTemplate)((FormDataImpl)linkImpl_target).getTemplate()), masterLanguage );
((FormDataImpl) newFormDataListElement).refresh(((FormDataImpl)linkImpl_source).getData());
context.logInfo("Data from source section " + linkImpl_source.getData()); // liefert korrekte Daten der Section
context.logInfo("newFormDataListElement data " + newFormDataListElement.getData()); // Inhalte aus der source section wurden nicht übernommen
formDataList_target.add(newFormDataListElement);
Nach der Ausführung des Skripts wird der zweiten Liste zwar ein neuer Absatz hinzugefügt aber die Inhalt aus dem Absatz der ersten Liste wird nicht übernommen.
Was haben wir bei der Implementierung übersehen ?
Verwendete FS Version 4.2.476
Vielen Dank im Voraus
Hallo Phillip,
ist das der vollständige Code? Unter http://www.e-spirit.com/odfs42/access/examples/de/espirit/firstspirit/access/editor/FsListEditorValu... wird gezeigt, wie man basierend auf einem Link einen Eintrag in einer FS_LIST anlegt. Auf den ersten Blick fehlt noch eine Entsprechung für das editor.set(masterLanguage, dataList)
Viele Grüße
Christoph
generell sollte kein internen Implementierungen genutzt werden, casts nach bspw. FormDataImpl sind hier nicht noetig. Konkret sollte man hier auf Basis von FormData u. FormField arbeiten. nicht Data ueber FormDAtaImpl holen. also kopieren, setzen und dann auch speichern. wie sieht denn das komplette script aus?
final IdProvidingFormData sourceFormData = ...;
final IdProvidingFormData targetFormData = ((LinkFormsProducer) dataList.getProducer()).create(template, myLanguage);
final List<String> formFieldNames = sourceFormData.getForm().appendEditorNames(null);
for (final String formFieldName : formFieldNames) {
final FormField<?> formField = sourceFormData.get(myLanguage, formFieldName);
final Object formFieldValue = formField.get();
final FormField<?> targetFormField = targetFormData.get(myLanguage, formFieldName);
targetFormField.set(formFieldValue);
}