MichaelN
I'm new here

Auslesen der EntityFormData Editoren aus dem ContentStore

Jump to solution

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

0 Kudos
24 Replies

Die Umstellung ist genau unser Ziel.

In erster Instanz haben wir die Nutzung der deprecated-Methoden eliminiert. Ich kann aber nicht festellen, dass eine Methode (oder Klasse) der obigenCode-Zeilen auf deprecated stehen!?

0 Kudos

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

0 Kudos

Habe das jetzt in der Anwendung stringent umgestezt.

Allerdings habe ich noch ein kleines initiales Problem.

Beiden Code-Stellen liefern immer null. Was amche ich hier falsch?:

SpecialistsBroker broker = (SpecialistsBroker) connection.getBroker();

storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

hier ist storeAgent null.

Und wenn ich das so machen,

SpecialistsBroker broker = ((BrokerAgent) connection.getBroker().requestSpecialist(BrokerAgent.TYPE)).getBrokerByProjectName(projectName);

Dann ist broker null.

0 Kudos

Moin,

Michael Nahberger schrieb:

Beiden Code-Stellen liefern immer null. Was amche ich hier falsch?:

SpecialistsBroker broker = (SpecialistsBroker) connection.getBroker();
storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

Diese Stelle hatte ich oben schon versucht zu erklären. Die Connection hat nicht genügend Informationen, um einen StoreAgent zu liefern.

Und wenn ich das so machen,

SpecialistsBroker broker = ((BrokerAgent) connection.getBroker().requestSpecialist(BrokerAgent.TYPE)).getBrokerByProjectName(projectName);



Dann ist broker null.


Dann ist das angeforderte Projekt mit dem gegebenen Namen entweder nicht vorhanden, nicht aktiv oder es fehlen die Zugriffsrechte für den Benutzer der Connection (siehe auch API-Dokumentation). Diese Stelle macht nichts anderes, als connection.getProjectByName(name); in Eurem Code, und stellt dann eine passende Broker-Instanz bereit.

Gruß, Stefan

0 Kudos

Kaum macht man es richtig Smiley Wink. Jetzt funktioniert es. Danke schön.

0 Kudos