- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
table template in FS5 holen
Hallo,
ich benรถtige ein Methode, die mir das table template eines DatasetContainer liefert analog zu getDefaultContentNode.
Mein alter Code sah so aus:
DatasetEditorValue editor = ...
String templateName = editor.getDefaultContentNode().getName();
Mein Neuer Ansatz ist dieser:
DatasetContainer datasetContainer = (DatasetContainer) formField.get();
Dataset dataset = datasetContainer.getDataset();
String templateName = dataset.getTableTemplate().getName();
Allerdings ist schon dataset an dieser Stelle null.
Wie komme ich an das TableTemplate?
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, die Nutzung von FormFields deutet bei Templates auf die Auswertung der Default-Werte hin, ist das so richtig? รber diesen Weg sehe ich aktuell keine Mรถglichkeit, an die gewรผnschte Informationen heranzukommen. Es wรคre aus fachlicher Sicht auch der falsche Ansatz, denn hier arbeitet man auf einer Instanz des Gadgets, die ja nicht alle Varianten der erlaubten Konfiguration wiederspiegelt.
Alternativ kรถnnte man รผber die Formulardefinition gehen (Template#getGomProvider()#forms()) und die GomDataset Instanzen auswerten. Das ist dort zwar vieles keine API, hat sich aber seit einigen Versionen fachlich nicht verรคndert. Mรถglicherweise lohnt sich eine Feature-Anfrage, um hierรผber einen zukunftssicheren Weg fรผr das Auswerten der Formulardefinitionsobjekte zu schaffen.
Beste Grรผรe
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
du kannst mit datasetContainer.isEmpty prรผfen, ob ein DataSet vorhanden ist.
Versuch mal datasetContainer.getTemplateUid() und dann einfach TableTemplate tableTemplate = (TableTemplate) templateStore.getStoreElement(<uid>, TableTemplate.UID_TYPE);
Viele Grรผรe
Thorsten
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Erst mal schรถnen Dank
datasetContainer.isEmpty() liefert in diesem Falle wirklich true und templateUid ist null, aber das ist auch immer so, da wir ja Content in ein leeres FS-Projekt importieren.
Ich benรถtige aber gerade auch fรผr leere Datasets den templateNamen. Die alte Logik (sieh oben) liefert das auch, aber die ist ja deprecated.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
die Anfrage ist ein wenig verwirrend. Die Methode getDefaultContentNode()
liefert (wie der Name schon sagt) kein TableTemplate sondern ein Content2-Element. Wenn der Name zufรคllig einer Tabellenvorlage entspricht, mag der (unbekannte) Code, der diesen nutzt, funktionieren. Generell jedoch ist es der falsche Name.
Dass ein leerer Datensatz kein Template hat, sollte einleuchten, denn ohne eine Auswahl ist auch keine Vorlage bekannt.
Obige Methode liefert auch nicht den aktuell zum Datensatz gehรถrenden Knoten, sondern den Knoten der ersten im GOM definierten, erlaubten Quelle (SOURCES-Tag). Das passt entsprechend nur dann zusammen, wenn lediglich ein Knoten erlaubt ist. Dies wรคre wohl auch der einzige Weg, um an dessen Namen zu kommen. Auch wenn sich das GOM des Dataset-Gadgets nicht in der API ist.
Am Besten wรคre, wenn der Kontext (also, von wo wird versucht auf den Templatenamen zuzugreifen) und Anwendungsfall (wofรผr wird der Name benรถtigt) hier beschrieben werden, um รผber eine Lรถsung nachzudenken.
Beste Grรผรe
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der Code ist dafรผr da, demjenigen, der รผber unsere Anwendung Daten in FirstSpirit Importieren mรถchte, die Information zu รผbermitteln, welche Daten in dieser Eingabekomponente erlaubt sind.
z.B. fรผr ein FS_DATASET
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Und in welchem Kontext wird dieser Code ausgefรผhrt? รber welchen Pfad gelangt man im Code an besagten DatasetContainer?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Es wird รผber die Templates Iteriert und dann รผber alle einzelnen EingabeKomponenten des Templates. Ist formField.getType() ein DatasetContainer, so werden halt die Infos dazu generiert. Unter anderm halt auch das gรผltige TableTemplate als Info.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, die Nutzung von FormFields deutet bei Templates auf die Auswertung der Default-Werte hin, ist das so richtig? รber diesen Weg sehe ich aktuell keine Mรถglichkeit, an die gewรผnschte Informationen heranzukommen. Es wรคre aus fachlicher Sicht auch der falsche Ansatz, denn hier arbeitet man auf einer Instanz des Gadgets, die ja nicht alle Varianten der erlaubten Konfiguration wiederspiegelt.
Alternativ kรถnnte man รผber die Formulardefinition gehen (Template#getGomProvider()#forms()) und die GomDataset Instanzen auswerten. Das ist dort zwar vieles keine API, hat sich aber seit einigen Versionen fachlich nicht verรคndert. Mรถglicherweise lohnt sich eine Feature-Anfrage, um hierรผber einen zukunftssicheren Weg fรผr das Auswerten der Formulardefinitionsobjekte zu schaffen.
Beste Grรผรe
Stefan

