aVogt
Returning Creator

Alle Variablenamen von Eingabefeldern in einem Absatz (Section) ermitteln

Jump to solution

Hallo,

um Seiten mit speziellen Werten für die Suche zu indexieren (über die PushApi) hole ich mir von jeder Seite einen bestimmten "Body"

     Body pageBody = pg.getBodyByName("content");

und davon alle Absätze

     listBodyChilds = pageBody.getChildren()

Beim iterieren über die Absätze erhalte ich eine Section, wie erwartet und gewünscht.

Bisher habe ich wie folgt weitergearbeitet

     Data dataSect = sectionChild.getData();
     List listVarNam = dataSect.getVariableNames()

Somit habe ich alle Variablenamen des Absatzes und darüber die Felder mit den "values" erhalten. Somit habe ich denn den Eintrag für die Suche aufgebaut. (z.B. alle Textfelder als ein Feld für die Suche zusammengeschrieben)

Nun habe ich auf FS4.2.452 umgestellt und getData() ist deprecated.
Mit
     sectionChild.getFormData()
bekomme ich die FormData, wo es kein getVariableNames() mehr gibt.

Ich habe nun folgende MMöglichkeit gefunden, aber "GomText" steht nicht in der API (somit wahrscheinlich nicht öffentlich und soll sicher nicht unbedingt verwendet werden; die Ermittlung des Namen in der whileschleife ist nur exempalrisch und nicht vollstängigumgesetzt)

Iterable listVarNam1 = dataSect1.getForm().forms();
Iterator itListVarNam = listVarNam1.iterator();
while(itListVarNam.hasNext()) {
  try{
   GomText gt = (GomText) itListVarNam.next();
   String feldName = gt.getName();
  } catch (Exception E) {}
}


Muss ich nun immer die Variablenamen wissen oder gibt es eine andere Möglichkeit (ausser der o.g. falls sie verwendet werden sollte) an alle Variablenamen zu kommen?

Grüße aus Dresden

0 Kudos
1 Solution

Accepted Solutions
andre
I'm new here

so in etwa sollte es funktionieren.

final FormData formData = ....getFormData();

final List<String> strings = formData.getForm().appendEditorNames(null);

for (final String name: strings) {

    final FormField<?> formField = formData.get(language, name);

    final Object value = formField.get(); // dieses ist dann der Feldwert

}

View solution in original post

0 Kudos
2 Replies
andre
I'm new here

so in etwa sollte es funktionieren.

final FormData formData = ....getFormData();

final List<String> strings = formData.getForm().appendEditorNames(null);

for (final String name: strings) {

    final FormField<?> formField = formData.get(language, name);

    final Object value = formField.get(); // dieses ist dann der Feldwert

}

0 Kudos

Wenn ich aber vorher mittels:

for (String key : data.getVariableNames()) {                              {

   DataValue dataValue = data.get(key);

   EditorValue<?> editor = dataValue.getEditor();

   for(Language lang : allLanguages) {

        Object value = editor .get(language);

        ...

   }

}

die Daten bearbeitet habe, dann muss ich jetzt die Sprach-Iteration eine Ebene höher setzen!? richtig?:

for (Language lang : allLanguages) {

   for (String key : formData.getForm().appendEditorNames(null)) {     

      FormField<?> formField = formData.get(language, key);

      Object value = formField.get();

      ...

   }

}

0 Kudos