baginski
I'm new here

Wert eines Datensatzes per Scripting auslesen

Hallo,

ich habe einer Seite einen Datensatz aus einer Datenquelle zugeordnet (In der Seitenvorlage CMS_INPUT_COMBO_BOX mit CMS_INCLUDE_CONTENT)

nun möchte ich an einen bestimmten Stringwert aus dieser Datenquelle (per Script) auslesen.

Ich habe folgendes versucht

ComboboxEditorValue ctobj = (ComboboxEditorValue)sourcePage.getData().get("st_teasertyp").getEditor();

wenn ich fortsetze mit

Object obj= ctobj.get(ctx.getLanguage());

Bekomme ich als Klasse die inner class

de.espirit.firstspirit.store.access.contentstore.ContentOptionFactory$ContentOption

An dieser Stelle komme ich schon nicht weiter; irgendwann müßte ich noch die Tabellenspalte spezifizieren, um an den Wert zu kommen,

der mich interessiert..

Mit einem $CMS_VALUE$ komme ich per

$CMS_SET(setContentTyp,sourcepage.getData().get("st_teasertyp").getEditor().get(context.getProject().getMasterLanguage()).getValue().getValue("techname"))$

an mein Ziel, die Kette ist aber im Eclipse so nicht lauffähig - hier bekomme ich nach dem getEditor() den Fehler (genauso)

The method getValue() is undefined for the type capture#11-of ?

Irgendwas mache ich da noch falsch.. (jemand eine Idee?)

Danke & Gruß,

Michael

0 Kudos
7 Replies
aVogt
Returning Creator

Hallo Michael,

Wenn ich mal annehme, dass die Werte in der Combobox auch aus einer Datenquelle kommen, komme ich mit "ctobj.get(ctx.getLanguage()).getValue(); an die ausgewählte "Entity"

Language lang = context.getProject().getMasterLanguage();

Content2 C2contentTable = cs.getContent2ByName("dq_ohb_rgl_import");

Data erg = C2contentTable.getDataObject(dbRow);

ComboboxEditorValue cbe = (ComboboxEditorValue) erg.get("cs_Handbuch").getEditor();

Entity ent = cbe.get(lang).getValue();

dq_ohb_rgl_import ist eine Datenquelle

cs_Handbuch ist das Comboboxfeld in der Datenquelle

Grüße aus DD

Andreas

0 Kudos

Hallo Andreas,

danke für die Unterstützung.

Mein Fall ist etwas anders; ich habe die Zuordnung aus einer Seite heraus, über eine Combox, in der ich den Datensatz auswähle.

Wie gesagt, Ich bekomme als Objekt für den ComboBoxEditorValue die innere Klasse "ContentOptionFactory.ContentOption". Ich kann daraufhin leider nicht casten, da sie im Prinzip nicht sichtbar ist. Es hilft mir leider auch nicht, daß diese die Klasse "OptionImpl "extended; wenn ich nämlich versuche,

Object optObject = ctobj.get(ctx.getLanguage());

OptionImpl opt = (OptionImpl)optObject;

fällt er mir genauso auf die Füße; ich weiß jetzt auch wieso:

in meinem Modul (bei Ausführung der Methode, nicht zur Compilezeit) bekomme ich die Fehlermeldung:

java.lang.NoClassDefFoundError: de/espirit/firstspirit/access/editor/value/OptionImpl

hmmmm.... wenn ich die client.jar in das Modul packe würde es vermutlich möglicherweise gehen.. aber: ist es sinnvoll (gerade im Hinblick auf Serveraktualisierung ?) - andere Möglichkeiten ?

Edit: Ich stelle gerade fest, daß ich im Eclipse mit 4.2 arbeite, es aber auf einem 4.1er teste; vergeßt die Ausführungen vorerst.. :smileyblush:

Edit 2: In 4.1 ist es so, daß die innere Klasse ContentOption die Klasse Option extended.

Die Fehlermeldung, die ich beim casten auf (Option) erhalte ist:

java.lang.IncompatibleClassChangeError: Found class de.espirit.firstspirit.access.editor.value.Option, but interface was expected

Gruß,

Michael

0 Kudos
aVogt
Returning Creator

Hallo Michael,

da kann ich erst mal nicht weiter helfen (hab kein 4.1 mehr), Wenn ich mich ganz dunkel erinnere hatte ich glaub so was ähnliches. Die Combobox lieferte mir glaub immer nur die ausgewählte ID des Datensatzes, keine Entity (wenn ich die von einer Inhaltsseite ermittelt habe)

Dann musste man mittels der gelieferten ID den zugehörigen Datensatz suchen.

Wie gesgt, das nur unter Vorbehalt. Da muss ein Profi ran Smiley Wink

Gruß

Andreas

0 Kudos

Hi,

wäre ein Workaround.. wie käme ich sinnvollerweise an die ID heran ?

sourcePage.getData().get("st_teasertyp").getEditor().getValue()

gibt sie mir zwar zurück, ist leider deprecated.. :smileycry:

Gruß,

Michael

0 Kudos
aVogt
Returning Creator

Hmm, ich bekomme wie gesagt die Entity geliefert.

Vieleicht nur "sourcePage.getData().get("st_teasertyp")"??? Irgendetwas muss man eigentlich bekommen ...

Wenn Du die ID hast => KeyValue.add(...) liefert Fehler

Mehr kann ich leider auch nicht helfen (und bin nun erst mal in Urlaub)

Gruß Andreas

0 Kudos

Es geht um die ID des Datensatzes, richtig?

Auf der Option können sie einfach ein getValue() machen, dann bekommen Sie die Entity zurück. Falls nicht, bitte mal das komplette Skript, die verwendeten Eingabekomponenten und die FirstSpirit Version posten.

0 Kudos

Hi, (gerade frisch aus dem Urlaub zurück) Smiley Happy

Ich habe es mit getValue zurück - sie ist wie gesagt, da oben zwar deprecated, aber das war mir jetzt auch egal..


Ansonsten habe ich es mittlerweile jetzt anders gelöst - ich hole mir die Werte einmalig aus der DB heraus (sind nicht viele), packe sie in eine Map und gleiche sie jeweils mit der zugeordneten ID ab.

Gruß,

Michael

0 Kudos