Questions & Answers

aVogt
Returning Creator

FS5.2R4: Ermittlung von Werten von Eingabekomponenten

Hallo,


ich stelle gerade auf FS5.2R4 um (von FS5.1R3) .


Bei der Ermittlung von Werten der Eingabekomponenten gehe ich bisher immer รผber die entsprechenden **EditorValue Klassen (z.B. DomEditorValue). Die darin enthaltene Methode get(Language language)  stammt aus der Klasse EditorValue(), die komplett deprecated ist.


Um es relativ flexibel zu halten, bin ich bei Ermittlung der Werte  bisher immer รผber den EditorWrapper gegangen und dann getAccessEditor(..);

**EditorValue  value = ((EditorWrapper) entity.getValue("Aenderungsgrund")).getAccessEditor(context.getUserService(), true);

Dieser Weg scheint jetzt nicht mehr zum Ziel zu fรผhren.

Empfohlen (glaube ich) ist der Weg รผber FormData, da benรถtige ich bei Entitys aber immer ein Content2 (und somit immer die Datenquelle). Das finde ich etwas umstรคndlich.


Der Hinweis in EditorValue โ€žsince 5.2.21 - use ValueEngineer insteadโ€œ fรผhrt zu einer dev-Klasse.

Wenn auf eine dev-Klasse verwiesen wird, wie stabil ist diese in zukรผnftigen Versionen und wie komme ich an den ValueEngineer. Bekomme ich darรผber den Wert der Eingabekomponente?


Die Beispiele zum Ermitteln der Werte in der Api gehen noch รผber die **EditorValue-Klassen. Werden diese angepasst?


Ist der empfohlene Weg immer รผber FormData, oder gibt es einen anderen schnelleren Wert um von einer Entity an die Werte zu kommen, ohne รผber FormData zu gehen?


Wahrscheinlich stehe ich wieder mal aufโ€™m Schlauchโ€ฆ.


GrรผรŸe

Andreas

0 Kudos
1 Reply
mbergmann
Crownpeak employee

Hallo Andreas,

richtig, der empfohlene Weg ist immer, รผber ein FormData zu gehen. Insbesondere beim Schreiben von Werten, da nur hier z.B. die Regeln greifen.

Zunรคchst mal: Dein bisheriger Weg ist nicht nur @deprecated, sondern komplett auรŸerhalb der API, da der EditorWrapper gar nicht Teil der API ist. Der ValueEngineer fรผhrt Dich hier in die falsche Richtung, das ist eher von Belang wenn man eigene Eingabekomponenten baut.

Um zu einer Entity ein Dataset und damit ein FormData zu bekommen, brauchst Du nicht unbedingt ein Content2 (=eine Datenquelle). Hier gibt es nรคmlich auch den Weg รผber das TableTemplate, das (wie ein Content2) ein DatasetProvider ist. Darรผber kommst du letztlich per TableTemplate.getDataset(Entity entity) an ein Dataset - das in diesem Fall keine Datenquelle hat. Die Methode Dataset.getParent()liefert da auch einen Hinweis:

"Returns parent Content2 which can be null if this dataset (or it's entity) is only associated with a table-template."

Zum Thema DEV-API (auch wenn es in Deinem Fall letztlich doch nicht relevant ist): Hier gibt es lediglich etwas geringere "harte" Garantien was die "Stabilitรคt" angeht. Mit Stabilitรคt ist dabei aber nicht die "funktionale" Stabilitรคt gemeint (im Sinne von "funktioniert vielleicht nicht", "ist noch Beta" o.ร„.) sondern lediglich der garantierte Zeitraum (bzw. Versionsbereich) in dem keine rรผckwรคrts-inkompatiblen ร„nderungen vorgenommen werden. Der ist fรผr die DEV-API streng genommen lediglich innerhalb einer Minor-Version (d.h. im Allgemeinen ca. 15 Monate). Wenn ich mir da so andere Softwarehersteller ansehe, ist selbst das schon recht lang ๐Ÿ˜‰ In der Praxis ist es auรŸerdem so, dass hier zwar รถfters (z.B. bei neuen Features) Dinge hinzukommen (was ja nicht stรถrt). Aber dass wirklich rรผckwรคrts-inkompatible ร„nderungen gemacht werden, kommt nur sehr selten tatsรคchlich vor - und dann gibt es eigentlich immer auch frรผh genug vorher ein @deprecation announcement. Mir persรถnlich fรคllt zumindest in der 5er-Linie gerade kein Fall ein, wo es anderes gewesen wรคre... Von daher kann man (bis auf entsprechend in der API dokumentierte Einzelfรคlle) die DEV-API meiner Erfahrung nach im Allgemeinen bedenkenlos verwenden.

Viele GrรผรŸe

Michael

Type a product name