Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich würde gern über die API den ausgewählten Wert eines Datensatzes auslesen, der per FS_DATASET auf einer Seitenvorlage gesetzt wurde.. und das per Schleife auf einem bestimmten Strukturknoten. Dazu hole ich mir also zunächst den IDProvider
IDProvider pageRefFolder = siteStore.getStoreElement("employee_portal", IDProvider.UidType.SITESTORE_FOLDER);
Mittels getChildren(Pageref.class, true) und iterator() kann ich per while-Schleife darüber iterieren. Innerhalb der Schleife hole ich mir dann per Page page = iter.next().getPage() und
Page storeElement = (Page) pageStore.getStoreElement(page.getUid(), UidType.PAGESTORE);
das Inhaltselement. Leider fehlt mir jetzt der passende Ansatz um an das FS_DATASET bzw. den dahinterliegenden Wert zu kommen. Mit
FormField<?> data = storeElement.getFormData().get(masterLanguage, "fs_portal_com_D_vaillant_D_frwk_D_serviceLocation");
komme ich an die Eingabekomponente, nur schaffe ich es grad irgendwie nicht den Wert daraus auszulesen. Leider hilft mir auch das DatasetEditorValueExample nicht weiter...
Hat jemand einen Tipp für mich?
Besten Dank und viele Grüße
Peter
Hallo Peter,
wenn du an das Dataset-Objekt willst versuche mal folgendes:
DatasetContainer datasetContainer = (DatasetContainer) formData.get(masterLanguage,"fs_portal_com_D_vaillant_D_frwk_D_serviceLocation").get();
Dataset dataset=datasetContainer.getDataset();
Freundliche Grüße
Ismail
Die "Schleife" über "PageStore.getStoreElement(String, Store.Type)" ist überflüssig, du hast zu dem Zeitpunkt ja bereits die Seite vom Typ "Page" (es gilt also page == storeElement).
Das Beispiel DatasetEditorValueExample ist "alte" API, hilft also für den Weg über "FormData" und "FormField" nicht weiter.
Glücklicherweise ist mit der neuen API alles viel einfacher. Der Typ (in deinem Code das Fragezeichen) der FormField Instanz ist DatasetContainer. Also fehlt in deinem Code nur noch diese Zeile:
DatsetContainer datasetContainer = (DatasetContainer) data.get();
Dataset dataset = datasetContainer.getDataset();
Hallo Peter,
wenn du an das Dataset-Objekt willst versuche mal folgendes:
DatasetContainer datasetContainer = (DatasetContainer) formData.get(masterLanguage,"fs_portal_com_D_vaillant_D_frwk_D_serviceLocation").get();
Dataset dataset=datasetContainer.getDataset();
Freundliche Grüße
Ismail
Hallo zusammen,
super, vielen Dank für eure Hilfe.
@Peter: Danke, das war mir gar nicht aufgefallen Mit "neuer API" meinst du FS5?
@Isamail: Genau das hat mir gefehlt.. perfekt, besten Dank!!
Viele Grüße
Peter
Mit "neuer API" meine ich FormData und FormField. Eingeführt haben wir das mit Version 4.2 Release 4, damit das den Übergang zu Version 5 erleichterr. In Version 5 wurde noch mehr auf diese API umgestellt, trotzdem gibt es auch in v5 noch der Weg über die alten API-Wege (nur eben als "deprecated" gekennzeichnet).