- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Auslesen der EntityFormData Editoren aus dem ContentStore
Hallo,
ich mรถchte รผber die Editoren der Eingabekomponenten eines Datasets (content.getDataset(entity);) iterieren.
dazu hole ich mir das FormData
FormData formData = dataProvider.getFormData();
und dann den entsprechenden Editor:
formData.getForm().findEditor(editorName).getDefaultValue();
genau hier ist mein Problem.
Als Test lese ich die Datenbank-Schemata-Vorlagen des Mithras-Projekts aus.
Bei z.B. "Produkte" (product_categories) erhalte beim Aufruf von getDefaultValue() den Wert null und ich komme logischerweise nicht an die Informationen dieses Editors (z.B. fรผr 'cs_name' der TextEditorValue)
Bei z.B. "Produktvorschlรคge" (product_offers) erhalte ich den TextEditorValue mittels 'cs_name' und alles ist gut
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das wird aktuell auch nicht gehen, weil es fรผr einige Zugriffe (noch) keine Alternativen gibt. Mit Vermischung meine ich, dass z. B. der TemplateStore รผber den UserService geholt wird, die inneren Daten (OptionModel) dann mit Hilfe eines Brokers. Wรผrde man sich den TemplateStore รผber einen Broker holen (Projekt-bezogen, wie oben, รผber den StoreAgent), wรคre auch der Zugriffsweg auf die OptionFactory klarer ersichtlich. Der SpecialistsBroker ersetzt benรถtigte API aus Connection, Project und UserService durch die modulare Bereitstellung von spezialisierten und funktional รผbersichtlichere Agenten. Hier ist ein einheitlicher Weg vermutlich sinnvoller, als Teile zu ersetzen.
Ich hoffe, dass jetzt ein funktionierender Weg fรผr Euer Problem an dieser Stelle gefunden wurde.
Gruร
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
formData = Dataset#getFormData()
d.h. dann
final FormField<?> formField = formData.get(language, editorName);
formField.get() <= dieses ist den der Wert des editors.
formData.getForm()
greift auf die Formulardefinition zu. und wenn kein default-wert gesetzt ist wird null geliefert.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
vielleicht hilft das ja:
final List<String> listVarNam = formData.getForm().appendEditorNames(null);
Da brauchst Du nicht die namen der Eingebekomponenten wissen. Du bekommst eine Liste mit allen Namen der Eingabekomponenten zurรผck.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ja mittels formField.get() komme ich dann an den Wert des editors, aber ich benรถtige ja ein EditorValue<?> um dann dynmaisch auf die einzelnen unterschiedlichen Editoren zu reagieren.
Das funktioniert auch รผberall wunderbar nur bei einigen Datenbank-Schemata-Vorlagen halt nicht.
Aber es existieren hier alle EditorValues:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Michael Nahberger wrote:
Ja mittels formField.get() komme ich dann an den Wert des editors, aber ich benรถtige ja ein EditorValue<?> um dann dynmaisch auf die einzelnen unterschiedlichen Editoren zu reagieren.
was heisst denn in deinem fall dynamisch? mir ist nicht klar warum du die EditorValue brauchst?
willst du abhaengig von einem Wert einen anderen รคndern? ...da kรถnnten die Regeln/Ruls helfen. willst du nur den Typ des Werts wissen... -> de.espirit.firstspirit.forms.FormField#getType
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wir haben hier eine Anwendung, die das importieren von Daten in FS erlaubt.Hierfรผr lesen wir im Vorhinein die Informationen aus FS aus um mรถglichst nur validen Content zu importieren.
z.B. benรถtigen wir im Falle, dass es sich um ein OptionsEditorValue handelt das OptionModel, welches wir mittels getOptionModel ermitteln. dazu mรผssen wir aber wissen, dass es sich um ein OptionsEditorValue handelt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
((OptionFactoryProvider)form.findEditor(formField)).getOptionFactory();
und ueber die Factory kommt man an das OptionModel
. und getType von FormField sollte in diesem FAll Option.class sein
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK und fรผr _alle_ anderen Eingabekomponenten geht das analog?
Wir stellen gerade Code auf die FormData-Api um und der alte sieht etwa so aus und wir konnetne immer mit dem EditorValue arbeiten und auf dieser Grundlage agieren:
Data d = ...
DataValue dv = d.get(varName);
EditorValue<?> editorValue = dv.getEditor();
if (editorValue instanceof ComboboxEditorValue) {
// do something
} else if (editorValue instanceof ContentAreaListValue) {
// do something
} else if (editorValue instanceof ...){
...
Das geht so dann wohl nicht mehr!?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
> Das geht so dann wohl nicht mehr!?
.... FormField#getType liefert keine EditorValue aber den WerteTyp.
ComboboxEditorValue ...siehe oben Option
ContentAreaListValue siehe API -> interface ContentAreaListValue extends EditorValue<SectionList>
also ist der WerteTyp SectionList
usw.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hoffentlich letzte Frage :
Wie komme ich dann an die Methoden des ehemals gelieferten GomEditorProvider:
getAllowEmpty, convertEntities, usesLanguages etc.

