Autor Thema: Bei XPages im QuerySave Felder füllen  (Gelesen 3723 mal)

Offline oson00

  • Aktives Mitglied
  • ***
  • Beiträge: 240
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Bei XPages im QuerySave Felder füllen
« am: 20.10.10 - 13:17:54 »
Hallo zusammen,

ich verzweifele und verstehe die Welt nicht mehr. Vielleicht verstehe ich auch einfach JavaScript nicht. :(

Ich möchte eine History-Funktion schreiben, die im QuerySaveDocument meiner Datenquelle aufgerufen wird. Hier werden bestimmte Felder auf Änderung kontrolliert. Falls sich was geändert hat, soll das dokumentiert werden.

Wenn nur ein Feldwert geändert wird, klappt das auch sehr gut. Bei zwei oder mehr bekomme ich eine Exception:

Unknown or unsupported object type in Vector

Den Grund dafür habe ich gefunden, aber ich verstehe ihn nicht. Sobald etwas dokumentiert werden soll, werden die Werte aus einem History-Feld gelesen. Das ist eine Text- oder Datumsliste. Ich bekomme daher mit

Code
var arr = new java.util.Vector();
arr = currentDocument.getItemValue ("History_ModifiedData");
arr.add(0,"Es hat sich was geändert!");
currentDocument.replaceItemValue ( "History_ModifiedData", arr);

einen wunderbaren Vector zurück. Die einzelnen Vector-Elemente sind Strings. Genau wie ich es möchte. Mit dem .add füge ich als erstes Element einen neuen Eintrag hinzu und schreibe alles per .replaceItemValue zurück. Klappt wunderbar. Folgendes steht im Vector und damit dann auch im Feld:


(0)   -->   String
(1)   -->   String
(2)   -->   String
(3)   -->   String
...



Sobald ich nun diesen Code-Teil in einer Schleife ausführe, weil sich 2 Felder geändert haben, kommt es zu einem merkwürdigen Phänomen. Beim ersten Aufruf verhält sich alles wie oben beschrieben. Beim zweiten Aufruf wird es interessant:

Ich bekomme per .getItemValue wieder ein Vector. Dieser Vector enthält aber nicht meine einzelnen String-Elemente, sondern einen Vector. Erst in dem stecken die String-Elemente. Wenn ich nun ein weiteres Element mit dem obigen Code hinzufüge, bekomme ich folgenden Vector-Inhalt:


(0)   --->   String
(1)   --->   java.util.Vector


Und wenn ich diesen gemischten Vector per .replaceItemValue in das Dokument schreibe, kann er dieses nicht mehr speichern und die oben genannte Exception wird ausgegeben.

Warum ist das so und wie kann ich das beheben?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz