- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
GOM-Vorgabewerte per Script setzen?
Hallo,
ich hรคnge an dem Problem, per Script ein GOM-Element (also eine Eingabemaske) zu erzeugen und darin auch Vorgabewerte zu setzen. Die Maskengenerierung geht auch schon (mรผhsam aufgrund unvollstรคndiger GOM-Dokumentation ), aber bei den Vorgabewerten scheitere ich daran, dass setDefaultValue() einen Wert vom Typ "EditorValue" erwartet, aber ich keinen neuen EditorValue instantiieren kann, weil es sich um Interfaces handelt.
Folgender Script-Beispielcode soll das zeigen (arbeitet im Formular des gerade in Bearbeitung befindlichen Scripts):
// ********** Imports an dieser Stelle zugunsten der Kรผrze weggelassen ...
// Master language
masterlang = context.getProject().getMasterLanguage();
// Template-Store
ts = context.getUserService().getStore(Store.TEMPLATE_STORE, true, true);
// Aktuelles Script
sc = context.getScript();
// Dessen Formular = GomProvider
gp = sc.getGomProvider();
// Formular lรถschen
gp.clear();
// Neues Formularelement
fe = new GomText();
// Name setzen - war das mรผhsam, das rauszufinden ...
a = new ValueOfContractor.Invoke();
d = a.valueOf(Designator.class,"st_text_1");
fe.setName(d);
// Langinfos spare ich mir im Beispiel
// Sprachunabhรคngig
fe.setUseLanguages(YesNo.NO);
// Default Value ergibt NULL
print fe.getDefaultValue();
// ********* Hier hรคnge ich: Wie erzeuge ich eine Default-Vorgabe?
// ********* Anschlussfrage: Fรผr einen CMS_INPUT_RADIOBUTTON?
// Element zum GomProvider hinzufรผgen
gp.add(fe);
// Template aktualisieren
sc.setGomProvider(gp);
// und Speichern
sc.save("Testscript hat sein eigenes Formular verรคndert");
Wie kann ich da den Default setzen?
Arndt Bรคr
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fรผr die Erzeugung eines EditorValues gibt es keine direkte API. Was aber gehen sollte: nach dem Setzen des GomProviders via sc.setGomProvider(...) sollte sc.getDefaults() ein Dataobjekt liefern, das die entsprechenden EditorValues beinhaltet und รnderungen ermรถglicht. Ein anschlieรendes sc.setDefaults(...) setzt die geรคnderten Werte als Vorgabewerte fรผr das GOM. Sprich, Vorgabewertbehandlung zwischen Templateaktualisierung und Skript Speichern durchfรผhren.
Fรผr einen Radiobutton kann ein Wert รผber die OptionFactory erzeugt werden, die man vom zugehรถrigen Forumularelement bekommt: fe.getOptionFactory().create("option");
Gruร
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ahhhhh (Erleichterung)
Stefan Schulz schrieb:
... nach dem Setzen des GomProviders via sc.setGomProvider(...) ...
das "nach" dem Setzen scheint der entscheidende Hinweis zu ein, vielen Dank. Ich bin davon ausgegangen, dass schon die Erzeugung des GOM-Elements bereits das Default-Objekt anlegen mรผsste. Im Nachhinein habe ich das wahrscheinlich nicht in Betracht gezogen, weil es nicht in meinen Erstellungsprozess passt. Die Quelldaten, aus denen ich die GOM-Elemente erzeuge, enthalten natรผrlich aus die Defaults - da ist es logisch, auch gleich das Element mit den Defaults erzeugen. Nun muss ich
- Elemente erzeugen als GOM-Liste
- setGomProvider();
- Defaults der Elemente erzeugen
Also zwei Durchgรคnge. Aber Hauptsache, es geht รผberhaupt. Das probiere ich jetzt einmal aus.
Grรผรe,
Arndt
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Update: getDefaultValue() gibt erst nach dem Speichern :smileyalert: des Templates ein entsprechendes Objekt zurรผck. Das habe ich erst beim Anlegen eines neues Feldes gemerkt.
Vorher hatte ich zum Testen nur bestehende Masken mit GomList().clear() gelรถscht und dann die Eingabefelder neu erzeugt. Da gab es den DefaultValue() auch schon nach dem setGomProvider() (wahrscheinlich aus der alten Instanz des Formularelements).
Also:
- Elemente erzeugen als GOM-Liste
- setGomProvider();
- save();
- Defaults der Elemente abfragen, modifizieren
- save();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das ist tatsรคchlich sogar ein Fehler in der Implementierung, dass beim Setzen der (modifizierten) GOM-Definition die Vorgabewerte nicht korrekt angepasst werden.
Interne ID: #104471
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Debugging by Doing
Andere Frage: Wo ist denn die GOM-API ausfรผhrlicher dokumentiert? Die normale API-Dokumentation bricht irgendwo ab einer bestimmten Ebene ab (in etwa da, wo es von generischen GomElement hin zu den spezifischen Interfaces geht)

