- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Datenquellen-Eintrag via Script – keine Reaktion
Hallo Community,
mit folgendem Script(-Auszug) versuche ich einen Datenquellen-Eintrag zu erzeugen, bei dem der Titel gesetzt wird. Das Script läuft durch, nur leider wird kein Eintrag erzeugt. Das "csTerm.save()" wird scheinbar schon in irgendeiner Form ausgeführt, da ich, wenn ich die Entity nicht "locke", eine entsprechende LockExeption bekomme.
Content2 csTerm = (Content2) contentStore.getStoreElement("terms", IDProvider.UidType.CONTENTSTORE);
Schema schema = csTerm.getSchema();
Session session = schema.getSession();
Entity entity = session.createEntity(csTerm.getEntityType().getName());
try {
csTerm.lock(entity);
csTerm.setLock(true, false);
Dataset dataset = csTerm.getDataset(entity);
FormData formData = dataset.getFormData();
GomEditorProvider prov = formData.getForm();
GomFormElement elementTitle = prov.findEditor("cs_title");
TextEditorValue editorTitle = (TextEditorValue) elementTitle.getDefaultValue();
editorTitle.set(lang, "NurnTest");
csTerm.save();
csTerm.unlock(entity);
csTerm.setLock(false, false);
…
Kann mir jemand weiterhelfen?
- Labels:
-
Developers
-
Documentation
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
...
FormData formData = dataset.getFormData();
FormField<String> field = (FormField<String>) formData.get(lang, "cs_title");
field.set("My new Value");
dataset.setFormData(formData);
....
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
in Ihrem Script fehlt noch das zurückschreiben des FormData -Objekt dataset.setFormData(formData); Und das commit in die Datenbank mit session.commit(). Das commit sollte immer erst erfolgen wenn man mit den Verändern, Anlegen und löschen fertig ist. Soll heissen werden mehrere Datensätze angelegt erfolgt abschliessend nur ein commit.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke für Ihre Antwort. Nun bin ich in der glücklichen Lage, Einträge zu erstellen. Nur leider ist das Feld "cs_title" leer.
Folgendermaßen sieht der Code innerhalb des try-Blocks jetzt aus:
csTerm.lock(entity);
csTerm.setLock(true, false);
Dataset dataset = csTerm.getDataset(entity);
FormData formData = dataset.getFormData();
GomEditorProvider prov = formData.getForm();
GomFormElement elementTitle = prov.findEditor("cs_title");
TextEditorValue editorTitle = (TextEditorValue) elementTitle.getDefaultValue();
editorTitle.set(lang, "NurnTest");
// System.out.println(formData.get(lang, "cs_title").get());
// Gibt mir korrekterweise den String "NurnTest" aus
dataset.setFormData(formData);
csTerm.save();
csTerm.unlock(entity);
csTerm.setLock(false, false);
session.commit();
Und die XML-Struktur für "cs_title":
<CMS_INPUT_TEXT name="cs_title" hFill="yes" singleLine="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Titel"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
Was habe ich hier wieder übersehen…?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
...
FormData formData = dataset.getFormData();
FormField<String> field = (FormField<String>) formData.get(lang, "cs_title");
field.set("My new Value");
dataset.setFormData(formData);
....
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke, so funktioniert es!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
obwohl die Frage schon beantwortet ist, hätte ich noch eine angrenzende Frage.
Wie bekomme ich denn das csTerm Objekt? Im Beispiel oben wurde dies folgendermassen geholt:
Content2 csTerm = (Content2) contentStore.getStoreElement("terms", IDProvider.UidType.CONTENTSTORE);
Gerne würde ich es gleich holen. Da stellt sich aber die Frage, wie ich an das Element contentStore komme.
Danke für eure Hilfe!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Was ist denn mit "gleich holen" gemeint? Entweder man hat das Element bereits (z.B. in einem Kontextmenü-Skript das aktuelle Element), oder man muss es sich anhand der ID oder der UID holen. Einen anderen Weg gibt es nicht.
[EDIT]
Ah, "gleich" im Sinne von "ebenfalls" -> Siehe Antwort unten von Tobias
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das Objekt "contentstore" ist der ContentStore / Datenquellen. Diesen kann man über den UserService erhalten. http://www.e-spirit.com/odfs42/access/de/espirit/firstspirit/access/UserService.html#getStore%28de.e...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich möchte einen Sprachfallback für Datenquellen Einträge implementieren. Hierzu prüfe ich die Mussfelder des jeweiligen Entitys. Wenn ich feststelle, dass die Attribute in der aktuellen Sprache nicht vorhanden sind, dann möchte ich auf das Element der Mastersprache zugreifen.
Ich habe ein aktuelles Datenbank Entity Element in der englischen Sprache. Jetzt möchte ich über das Element auf das Element der deutschen Sprache zugreifen. Herr Waltenberg von e-Spirit hat vorgeschlagen über getFormData auf die Attribute zuzugreifen und hat mir diesen Community Eintrag als Referenz angegeben. Wie ich jetzt aber von meinem englischen Element auf das deutsche Element komme, weiss ich noch nicht.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sprachfallback? Im Template? Das wäre doch $CMS_VALUE(#row.spaltenname,default:#row.spaltenname_EN)$
und im script hat man doch ein Objekt mit allen sprachen und weleche Sprache man will kan man ja steuern:
FormField<String> field = (FormField<String>) formData.get(lang, "cs_title");
lang entspricht einem Language Objekt.http://www.e-spirit.com/odfs42/access/de/espirit/firstspirit/access/Language.html

