jean-claude_bac
I'm new here

Update FormDatalist Einträge in DB

Ich habe eine 1:n Beziehung (Aggregation) zwischen einem Produkt (Tabelle product) und einer Textliste Bulletpoints (Tabelle bulletpoints) und möchte den Text der bulletpoint erneuern. Hierzu ein Auszug aus dem Code:

...

Dataset dataSet = table.getDataset(productEntity);

FormData formData = dataSet.getFormData();

FormField<FormDataList> shopBulletList = (FormField<FormDataList>) formData.get(language,"shopBullets");

final FormDataList formDataList = shopBulletList.get();

for (IdProvidingFormData idProvidingFormData : formDataList) {

     System.out.println("Vorher: " + idProvidingFormData.get(language, BulletPoints.tt_text.name()).get());

     FormField<?> field = formData.get(language, BulletPoints.tt_text.name());

     field.set("testZeugs");

    System.out.println("Nachher: " + idProvidingFormData.get(language, BulletPoints.tt_text.name()).get());

}

dataSet.setFormData(formData);

dataSet.save();

table.save();

table.release(entity);

session.commit();

Der folgende Output wird generiert:

Output

Vorher: null

Nachher: testZeugs

Template für Product:

<CMS_MODULE>

...

<FS_LIST name="tt_shopBullets">

    <DATASOURCE type="database" useLanguages="no">

      <ACTIONS>

        <ACTION name="EDIT"/>

        <ACTION name="ADD"/>

        <ACTION name="REMOVE"/>

        <ACTION name="DETACH"/>

        <ACTION name="DOWN"/>

        <ACTION name="UP"/>

      </ACTIONS>

      <COLUMNS>

        <COLUMN show="no">#identifier</COLUMN>

      </COLUMNS>

      <LAYOUT>

        <ADD component="overview" constraint="center"/>

        <ADD component="toolbar" constraint="top"/>

        <ADD component="tabbedview" constraint="hide"/>

      </LAYOUT>

      <TABLE>global.bulletpoints</TABLE>

    </DATASOURCE>

    <LANGINFOS>

      <LANGINFO lang="*" label="Shop bulllets" description="Shop bulllets"/>

    </LANGINFOS>

  </FS_LIST>

...

</CMS_MODULE>

Bulletpoint template:

<CMS_MODULE>

  <CMS_INPUT_TEXTAREA name="tt_text" useLanguages="yes">

    <LANGINFOS>

      <LANGINFO lang="*" label="Bulletpoint" description="Bulletpoint"/>

    </LANGINFOS>

  </CMS_INPUT_TEXTAREA>

</CMS_MODULE>

Das Problem ist das meine Änderungen nicht in der Datenbank ankommen. Hat jemand eine Idee was ich falsch mache. Die anderen Einträge in product (hier nicht weiter aufgeführt) werden gespeichert, die Referenz auf die bulletpoints werden wenn  neue bulletpoint entitäten erzeugt werden ebenfalls gespeichert, aber die Texteinträge gehen verloren, bzw. können kein Update erfahren.

0 Kudos
1 Reply
broszeit
I'm new here

Hallo,

besteht das Problem noch?

Ich vermute, dass das Problem darin liegt, dass nur die Product Tabelle und deren Datensätze gespeichert werden, aber nicht die Datensätze der Bulletpoint Tabelle.

Es wäre auf jeden Fall einen Versuch wert, auf den veränderten Bulletpoint Datensätzen ebenfalls diese Schritte wie oben aufzurufen:

dataSet.setFormData(formData);

dataSet.save();

table.save();

table.release(entity);

Dafür müsste man sich den entsprechenden DataSet durch eine Abfrage auf die ID aus IdProvidingFormData.getId() holen.

Ich hatte versucht Ihren Fall nachzubauen, allerdings fehlen einige Informationen in den ausgelassenen Skriptteilen. Könnten Sie bitte das gesamte Skript anhängen wenn das oben Beschriebene nicht hilft?

Viele Grüße

Rouven Broszeit

0 Kudos