bit_mbrandt
I'm new here

LABEL für Dropdown aus Spalte vom Typ XML in Datenquelle

Jump to solution

Hallo,

wir haben ein Datenbankschema angelegt, das wie folgt exemplarisch aufgebaut ist:

Ashampoo_Snap_2015.05.19_20h03m01s_003_.png

In der Testtable2 gibt es im Formular eine Dropdown-Eingabekomponente, die die Werte der Spalte "xmltest" der Tabelle "Testtable" listen soll. Leider bekommen wir im Dropdown bei Verwendung von <LABEL lang="*">#row.xmlTest</LABEL> nur die ID des jeweiligen Datensatzes zu sehen. Wie kommen wir für die Auflistung an die Texte (ohne Formatierung) für die Darstellung in der Dropdownliste?

Könnte alternativ über eine Regel der plain Text des Feldes ermittelt und automatisch in einer Textspalte gespeichert werden, die dann angezeigt wird?

Vielen Dank vorab

Martin

0 Kudos
1 Solution

Accepted Solutions

Hallo Martin,

nein, funktionieren tut es genau genommen nicht - die Anzeige der ID ist hier eine Art Fallback-Verhalten wenn der unter LABEL benutzte Ausdruck ungültig ist bzw. nichts verwertbares liefert.

Ich wüsste hier nicht wie man auf entsprechende "komplexe" Datentypen (also XML-Spalten) zugreifen kann...

Wie wäre denn ein FS_DATASET (statt der CMS_INPUT_COMBOBOX) als Alternative zur Pflege der N:1-Relation? Mit mode=sheet wird die Darstellung von ausgewählten Elementen dann über die Schnipsel gemacht (hier kann man dann auf die Spalte bzw. genauer gesagt auf das Formularfeld zugreifen).

Viele Grüße

Michael

View solution in original post

0 Kudos
7 Replies
mbergmann
Crownpeak employee

Hallo Martin,

#row gibt es nicht im Zusammenhang mit LABEL, sondern nur #item. Funktioniert denn

#item.xmlTest?

Falls nein: Wie ist denn die LABEL-Definition in der Tabelle "Testtable" für die Eingabekomponente die dort xmlTest gemappt ist? Die wird dazu nämlich herangezogen (jedenfalls wenn es z.B. eine Combobox ist).

Viele Grüße

Michael

0 Kudos

Hallo Michael,

interessanterweise funktioniert das LABEL sowohläitem als auch mit #row bei gleichem Verhalten.

Die Eingabekomponente, die in der Testtable herangezogen wird, ist wie folgt:

<CMS_INPUT_DOM name="cs_name" hFill="yes" list="no" rows="2" useLanguages="yes">

        <FORMATS>

          <TEMPLATE name="hochgestellt"/>

          <TEMPLATE name="tiefgestellt"/>

        </FORMATS>

        <LANGINFOS>

          <LANGINFO lang="*" label="Name"/>

          <LANGINFO lang="DE" label="Bezeichnung"/>

        </LANGINFOS>

      </CMS_INPUT_DOM>

Viele Grüße

Martin

0 Kudos

Hallo Martin,

nein, funktionieren tut es genau genommen nicht - die Anzeige der ID ist hier eine Art Fallback-Verhalten wenn der unter LABEL benutzte Ausdruck ungültig ist bzw. nichts verwertbares liefert.

Ich wüsste hier nicht wie man auf entsprechende "komplexe" Datentypen (also XML-Spalten) zugreifen kann...

Wie wäre denn ein FS_DATASET (statt der CMS_INPUT_COMBOBOX) als Alternative zur Pflege der N:1-Relation? Mit mode=sheet wird die Darstellung von ausgewählten Elementen dann über die Schnipsel gemacht (hier kann man dann auf die Spalte bzw. genauer gesagt auf das Formularfeld zugreifen).

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke für den Hinweis. Genauso konnten wir den Punkt lösen.

Danke und Grüße

Martin

0 Kudos

Hallo,

leider war der Ansatz noch nicht zu Ende gedacht. Wir haben nun das Problem, dass auch in der Datenquelle selbst bei der Relation statt dem Titel nur die ID angezeigt wird. Wir nutzen nun ein FS_DATASET der folgenden Art und haben erfolglos versucht die Anzeige über das expression-Attribut zu setzen.

<FS_DATASET name="tt_Feature" hFill="yes" mode="sheet" useLanguages="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Feature" expression="#item.displayName.toText(false)"/>

          <LANGINFO lang="DE" label="Merkmal" expression="#item.displayName.toText(false)"/>

        </LANGINFOS>

        <SOURCES>

          <CONTENT name="merkmale"/>

        </SOURCES>

      </FS_DATASET>

Wie bekommen wir auch die Darstellung der Spalte in der Datenquelle hin?

Vielen Dank und viele Grüße

Martin

0 Kudos

Hallo Martin,

ich vermute mal, dass hier das Erzeugen des Labels fehlschlägt. Wenn dem so ist, wird dieses Problem auf INFO-Level geloggt und sollte sich im Client-Logfile wiederfinden ("Failed producing label...").

Die erste Fehlerquelle kann der Feldname sein, leider kenne ich das zur Definition passende Schema nicht. In den ersten Beiträgen oben gab es zum Beispiel Unterschiede in der Groß-Klein-Schreibung. Zudem wird hier bei der Auswertung des Ausdrucks über #item direkt die Datenentität referenziert. Das heißt, es wird an Hand versucht, den Komponententyp zu ermitteln. Je nach FS-Version gelingt dies nicht unbedingt.

Schaue bitte nach einer Meldung im Logfile, diese hilft voraussichtlich schon weiter. Falls der eingestellte Log-Level nicht ausreicht, kann dies über die Erweiterte Protokollierung im SiteArchitect geändert werden.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

danke für den Tip. Der SiteArchitect kann in der Tat das Label nicht bauen und wirft entsprechende Exceptions:

INFO  11.06.2015 14:40:57.975 (de.espirit.firstspirit.access.store.ItemEvaluator): Failed producing label for '137' by '#item.xmltest'! de.espirit.firstspirit.parser.EvaluatorImpl cannot be cast to de.espirit.firstspirit.access.GenerationContext

FSVersion=5.1.410.67084#4484;JDK=1.8.0_05 32bit Oracle Corporation;OS=Windows 8.1 6.3 x86;Date=11.06.2015 14:40:57

java.lang.ClassCastException: de.espirit.firstspirit.parser.EvaluatorImpl cannot be cast to de.espirit.firstspirit.access.GenerationContext

Das Label versuchen wir über "#item.xmltest" in der exakten Schreibweise wie im Datenbankschema zu ermitteln. Gibt es noch einen anderen Weg?

0 Kudos