devzero
I'm new here

Zugriff auf eine Liste die Bestandteil einer Datenbanktabelle ist über Formattemplate.

Vielleicht kann mir jemand bei folgendem Problem helfen.

Ich habe ein Datenbankschema erstellt mit zwei Tabellen (links/bereich).

Hier scheitere ich daran die Id's von "ebene_neu" ausgeben zu lassen. Dies ist eine Liste innerhalb der Tabelle links.

ebene_neu=<CMS_VALUE name="cs_ebene" tag="CMS_INPUT_LIST"><LANG id="§" set="1"><SEL><VALUE>450</VALUE><VALUE>451</VALUE></SEL></LANG></CMS_VALUE>

Wenn ich aus dem Html Kanal der Tabellenvorlage folgende Abfrage ausführe, dann erhalte ich die Id's die in ebene_neu enthalten sind.

$CMS_IF(#row.ebene_zahl.toString().equals("1") && #row.bereiche.bereich.toString.equals("Investmentfonds") && #row.position.toString.equals("bottom"))$

        $CMS_FOR(liste, cs_ebene)$

            ||$CMS_VALUE(liste.getKey())$||

        $CMS_END_FOR$

$CMS_END_IF$

Welche Möglichkeit habe ich aber wenn ich das aus einer Formatvorlage mache?

Formatvorlage liefert nur "de.espirit.common.event.NotifyingSet":

<CMS_HEADER>

<CMS_FUNCTION name="contentSelect" resultname="cs_anchors">

    <CMS_PARAM name="schema" value="az_liste"/>

    <CMS_VALUE_PARAM name="position" value="position"/>

    <CMS_VALUE_PARAM name="bereich" value="bereich"/>   

<QUERY entityType="links">

    <FILTERPARAM parameter="position" datatype="java.lang.String"/>

    <FILTERPARAM parameter="bereich" datatype="java.lang.String"/>

    <AND>

        <EQ attribute="bereiche.bereich" parameter="bereich"/>

        <EQ attribute="position" parameter="position"/>

    </AND>

</QUERY>

</CMS_FUNCTION>

</CMS_HEADER>$CMS_VALUE(bereich)$ -- $CMS_VALUE(position)$<br/>

$CMS_FOR(objekt, cs_anchors)$

    $CMS_IF(objekt.ebene_zahl.toString().equals("1"))$

        [$CMS_VALUE(objekt.ebene_zahl)$]--[$CMS_VALUE(objekt.name)$]<br/>

        $CMS_VALUE(objekt.ebene_neu.class)$ $-- liefert als Ergebnis nur de.espirit.common.event.NotifyingSet --$

        $CMS_FOR(unterebene, objekt.ebene_neu)$

        --->$CMS_VALUE(unterebene.getId())$<br/>

        $CMS_END_FOR$

    $CMS_END_IF$

$CMS_END_FOR$

Ich hoffe ich konnte das Problem verständlich beschreiben.

Danke schon mal für's lesen

EDIT: Problem wurde durch ein Update auf 4.2R4 gelöst.

0 Kudos
6 Replies
feddersen
Community Manager

Wie sehen die Tabellen im Datenbankschema dazu aus?

Was für eine Eingabekomponente ist objekt.ebene_neu?

0 Kudos

Hallo,

Tabellen im Datenbankschema:

tabellen_schema.jpg

ebene_neu ist eine CMS_INPUT_LIST, welche den Inhalt aus der Tabelle azliste.links über ein CMS_INCLUDE_CONTENT wiederspiegelt.

  <CMS_INPUT_LIST name="cs_ebene" useLanguages="no">

    <CMS_INCLUDE_CONTENT table="az_liste.links" type="entries">

      <LABEL lang="*">#row.name</LABEL>

    </CMS_INCLUDE_CONTENT>

    <LANGINFOS>

      <LANGINFO lang="*" label="Zugeordnete Links 2. Ebene:" description=""/>

    </LANGINFOS>

  </CMS_INPUT_LIST>

Gruß Ralf Kinast

0 Kudos

Über das NotifyingSet können Sie mittels CMS_FOR iterieren (machen Sie bereits), innerhalb der Schleife können Sie mit $CMS_VALUE(unterebene.value)$  auf die Entity und mit $CMS_VALUE(unterebene.value.getId())$ auf die ID des Datensatzes zugreifen.

0 Kudos

Das habe ich auch gedacht. Aber leider iteriert die Schleife nicht. 😞

        $CMS_VALUE(objekt.ebene_neu.class)$

        [

        $CMS_FOR(unterebene, objekt.ebene_neu)$

          { 

               $CMS_VALUE(unterebene.value.getId())$

          }

        $CMS_END_FOR$

        ]

Ausgabe:

de.espirit.common.event.NotifyingSet          [  ]

Habe ich evtl. vorher schon einen Denkfehler?

0 Kudos

Wenn sie uns ein kleines Projekt mit dem konkreten Problemfall zur Verfügung stellen, schauen wir gerne mal rein und versuchen den Fehler zu lokalisieren. Grundsätzlich funktioniert die Ausgabe aber, dass hatten wir schon verifiziert.

0 Kudos

Guten Morgen, ich habe Ihnen ein Testprojekt zugeschickt an community-admin.

Gruß aus Köln

0 Kudos