awellermann
I'm new here

Combo-Box im ContentCreator dynamisch befüllen

Hallo zusammen,

im Rahmen einer Modulentwicklung versuche ich ein CMS_INPUT_COMBOBOX Feld dynamisch mit eigenen Werten zu füllen. Leider ohne Erfolg Smiley Wink

Dabei halte ich mich relativ nah an den zur Verfügung gestellten Code-Beispielen und z.B. das setzen eines Default-Werts für ein Textfeld funktioniert auch wunderbar:

formData.get(EditorValue.SOLE_LANGUAGE, FELD_NAME).set(new String("Hello World"));

Nur bei der Combo-Box wird nach dem gleichen Schema nichts an Werten angezeigt. Versuche Code aus vorhandenen Beiträgen zu verwenden, scheitertn beim Casten des FormFields und der Initalisierung einer OptionFactory....

Ich verwende die FS-Version 5.1.209.

Es wäre super, wenn ihr mir eine kleine Hilfestellung geben könntet.

Danke und Grüße

Andre

15 Replies

Hi Andre,

dann haben wir doch aneinander vorbei geredet? Dein Code-Beispiel dient dem Setzen des Wertes der Eingabekomponente. Das XML weiter oben zeigt eine unvollständige Definition der Combobox (keine Einträge in ENTRIES) und auch ohne Anbindung an eine Datenquelle (CMS_INCLUDE_OPTIONS). Wenn dieses XML so bestehen bleibt, kann die Combobox keine Werte aufnehmen, weil die Definitionsmenge leer ist.

Was in deinem Code-Beispiel als Parameter übergeben werden kann, hängt von der konkreten Definition des XML ab. Ist es eintragsbasiert (also ENTRY-Elemente im XML), dann akzeptiert die Factory nur String. Ist es datenbankbasiert (über den Include-Weg), dann kannst du auch ein Entity als Parameter in der Factory setzen.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

ich versuche jetzt den Weg über <CMS_INCLUDE_OPTIONS type="public"> mein Objekt an die ComboBox zu binden.

Formausschnitt:

<CMS_INPUT_COMBOBOX name="AccountChoice"

                              useLanguages="YES">

                              <CMS_INCLUDE_OPTIONS type="public">

                                             <LABELS>

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

                                             </LABELS>

                                             <NAME>account</NAME>

                              </CMS_INCLUDE_OPTIONS>

                              <LANGINFOS>

                                        <LANGINFO lang="*" label="Accountchoice" description="TEXT" />

                                        <LANGINFO lang="DE" label="Accountauswahl" description="TEXT" />

                              </LANGINFOS>

</CMS_INPUT_COMBOBOX>

Ausschnitt module.xml

<public>

                              <name>account</name>

                              <class>---.contentcreator.plugin..model.Account</class>

                              <resources>

                                             <resource>lib/${project.build.finalName}.jar</resource>

                              </resources>

</public>

Im ContentCreator erscheint die Meldung "no public class named "account" found" wenn ich mein WebeditInlineEditItemsPlugin öffnen möchte

Das Jar-File wird in der web-app auch ausgeliefert: https://community.e-spirit.com/message/13182#13182

Die Pfad ist korrekt und das jar befindet sich auch im lib-Verzeichnis.

Kannst du mir da weiterhelfen?

Grüße

Andre

0 Kudos

Hi Andre,

krasser Sprung in eine andere Richtung…

Ich würde zunächst einmal prüfen, ob die eingebundene Klasse GomIncludeValueProvider implementiert. Wenn dies so ist, habe ich auf die Entfernung erst einmal keine Idee. Vielleicht noch, es im SiteArchitect auszuprobieren. Hm.

Beste Grüße

Stefan

0 Kudos

Hi Michael,

ja ein Schritt in die falsche Richtung Smiley Wink.

Ich versuche den gesamten Kontext mal genauer zu erläutern:

Also das ist jetzt meine ComboBox-Definition im XML ergänzt um einen Entry.

<CMS_INPUT_COMBOBOX name="Choice"

                              useLanguages="YES">

                              <ENTRIES>

                                        <ENTRY value="DUMMY">

                                                  <LANGINFOS>

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

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

                                                  </LANGINFOS>

                                        </ENTRY>

                              </ENTRIES>

                              <LANGINFOS>

                                        <LANGINFO lang="*" label="Image resoution" description="TEXT" />

                                        <LANGINFO lang="DE" label="Bildauflösung" description="TEXT" />

                              </LANGINFOS>

                    </CMS_INPUT_COMBOBOX>

Abhängig von der vorher getätigten Auswahl des Benutzer soll die ComboBox (z.B. Bildauflösung) nun mit Einträgen, die ich mir aus einer eigenen Datenquelle (extern von FS) hole, gefüllt werden. Also dynamisch zur Laufzeit

Screen1.JPG

Wenn ich mich jetzt noch mal auf deinen vorherigen Beitrag beziehe und nach meinem oben beschriebenen Schema (über FormData etc.) z.B. nur einen String reinschreiben möchte mit:

formField.set(factory.create("Hello World")); bekomme ich die Meldung:

"The value Hello World is not a valid option"

Was müsste ich denn übergeben als option übergeben? Den Textfeldern reicht natürlich ein String....

Ein schönes Wochende und Gruß

Andre

0 Kudos

Hi Andre,

jetzt ist doch einiges klarer. Es geht nicht nur um generiertes XML sondern auch um dynamische Bestimmung der Wertemenge einer Combobox.

Zum Setzen: Laut Definition erlaubt deine Combobox genau einen Wert: "DUMMY". Daher ist es nicht möglich, einen anderen als diesen zu setzen. Entsprechend die Fehlermeldung, die du beobachtest. Wenn diese Werte aus einer externen Quelle kommen, ist der Ansatz via eigenem ValueProvider schon richtig, wird dir aber nicht entscheidend weiterhelfen, denn diese externe Quelle wird im Verlauf des Formularlebens nur ein Mal (am Anfang) abgefragt.

Die dynamische Bestimmung der Wertemenge ist nur bei Nutzung der Include-Variante mit Datenbankanbindungen und unter Verwendung einer Query möglich, die mit Parametern versehen ist. Hier kann dann die Wertemenge via Regeln beeinflusst werden.

Ein Beispiel für solch eine Regel findet sich hier:

http://www.e-spirit.com/odfs51/Vorlagenentwicklung/Regeln/Wertermittlung-WITH/#beispiel_wertermittlu...

Meine Empfehlung wäre hier, den Weg über die FirstSpirit Datenquellen zu gehen und dort deine Werte und die Kategorienzuordnung (zur Mengenbestimmung via Regeln) einzupflegen.

Beste Grüße

Stefan

Hallo Stefan,

ich habe jetzt den Weg über die Include-Options gewählt, da ich bereits zum beim Öffenen des ContentCreator-Projekts die erforderlichen Daten aus meiner Datenquellen laden kann.

Vielen Dank für deine Hilfe!

Gruß Andre