Search the FirstSpirit Knowledge Base
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
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
}
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
}
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();
...
}
}