lmeric
I'm new here

Zugriff auf FS_List Typ=Inline über API

Nabend zusammen,

ich versuche gerade über die API an die Section einer FS_List heranzukommen. Das Beispiel in der API reicht da leider nicht aus, zudem steht da auch "This part of the API is preliminary and may change in future versions." im Interface "FormData".

Letztendlich möchte ich, wie es auch in der ContentAreaListValue möglich ist, an die Sectionliste zugreifen. Dort ist die API genau so, wie erwartet, jedoch nicht in der FS_List Komponente.

In FS_List Typ=Inline habe bisher folgendes:

List<String> varList = section.getData().getVariableNames();

      for (String variable : varList) {

            if (section.getData().get(variable).getEditor() instanceof FsListEditorValue) {

                FsListEditorValue fsListEditorValue = (FsListEditorValue) section.getData().get(variable).getEditor();

                FormDataList dataList = fsListEditorValue.get(language);

                for (FormData formData : dataList) {

                        /*

                         * TODO!

                         */              

                }

            }

Jetzt weiß ich nicht, wie ich aus dem formData eine Section bekomme.

Die zweite Sache ist, wie bekomme ich den Typ heraus? Es interessieren mich an dieser Stelle nur die Inline FS_Lists.

Danke vorab!

0 Kudos
8 Replies
gockel
Crownpeak employee

Hallo,

mit welcher FS-Version arbeiten Sie?

zudem steht da auch "This part of the API is preliminary and may change in future versions." im Interface "FormData".

Dieser Disclaimer ist ab Version 4.2.452 entfernt. Ich denke, dass sich zu Ihrer Version (je nachdem welche Sie haben) nichts mehr an dem Interface geändert hat.

Jetzt weiß ich nicht, wie ich aus dem formData eine Section bekomme

Gar nicht, da hier die neue FormData-API vorliegt. Ist aber auch nicht erforderlich, denke ich.

Die zweite Sache ist, wie bekomme ich den Typ heraus?

So sollte es gehen.

if (section.getData().get(variable).getEditor() instanceof FsListEditorValue) {

     FsListEditorValue fsListEditorValue = (FsListEditorValue) section.getData().get(variable).getEditor();

     FormDataList dataList = fsListEditorValue.get(language);

          for (FormData formData : dataList) {

                for (final GomFormElement form: formData.getForm().forms()) {

                    final String innerVarName = form.name();

                    FormField field = formData.get(language, innerVarName);

                    if (field.getType().equals(FormDataList.class)) {

                         // found inner fs list

                         // todo

                    }

               }

          }

     }

}

0 Kudos
andre
I'm new here

Levent Meric wrote:

Die zweite Sache ist, wie bekomme ich den Typ heraus? Es interessieren mich an dieser Stelle nur die Inline FS_Lists.

über. DataSource

http://www.e-spirit.com/odfs42/en/vorlagenentwicklung/formular/fs/fs_list/inline/inline_1.html?commu...

bzw. DataSourceType

http://www.e-spirit.com/odfs42/en/vorlagenentwicklung/formular/fs/fs_list/inline/inline_1.html?commu...

also sowas in der Art:

fsListEditorValue.getForm().getDataSource().getType() == DataSourceType.INLINE;

0 Kudos

formData eine Section:

Doch, ich muss auf die Texte zugreifen können. Deswegen muss ich an dieser Stelle wissen, wie ich die Texte extrahieren kann.

0 Kudos

Danke an dieser Stelle, ich werde es ausprobieren.

Trotzdem die Frage, wie ich an die Texte herankomme, die in der FS_List abgelegt sind.

0 Kudos
gockel
Crownpeak employee

Das ist auch möglich, allerdings über die neue FormData / FormField API

Wenn das Formular des inneren FS_LIST Eintrages z.B. eine CMS_INPUT_TEXT Komponente mit Namen "text" enthält so würde das so aussehen.

for (FormData formData : dataList) {

     final FormField textField = formData.get(language, "text");

     if (field.getType().equals(String.class)) {
          final String textValue = (String) textField.get();

          // todo:

     }
}

API-Links:

FormField.get()

0 Kudos

Hallo!

Ich habs jetzt. Ich wollte auf die einzelnen EditorValues hinaus, so wie es in den alten Eingabekomponenten auch ist.

So gehts:

for (FormData formData : dataList) {
    

           Iterable<GomFormElement> testing = formData.getForm().forms();

                    for (GomFormElement gomFormElement : testing) {

                        System.err.println("varName   : " + gomFormElement.getName());

                        System.err.println("editorType: " + gomFormElement.getDefaultValue());

                       

                        if (gomFormElement.getDefaultValue() instanceof TextEditorValue) {

                          //TODO!

                        }

                    }


}

Danke an dieser Stelle,

Levent Meric

0 Kudos

Ich sehe gerade, dass unter dem getDefaultValue keine Werte sich befinden.

Gibt es keine Möglichkeit aus dem FormData irgendwie die z.B. TextValue-Eingabekomponenten zu bekommen?

0 Kudos
gockel
Crownpeak employee

Siehe meine Antwort weiter oben: Re: Zugriff auf FS_List Typ=Inline über API

0 Kudos