Autor Thema: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt  (Gelesen 2868 mal)

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Hallo,

ich möchte per Java-NotesAPI in einem neuen Dokument ein RTItem hinzufügen, um mehrzeiligen Text zu hinterlegen. Leider habe ich die Erscheinung, dass das RT-Feld bei Zugriff über lokalen Notes-Client da ist, bei Kommunikation über CORBA mit einem Domino-Server aber nicht - keine Fehlermeldungen.

Woran liegt's?

Hier der Code:
Code
doc.removeItem(fieldName);
final RichTextItem item = doc.createRichTextItem(fieldName);
boolean firstLine = true;
for(String line : (String[])value) {
	if(!firstLine) item.addNewLine();
	item.appendText(line);
	firstLine = false;
}
....
doc.save(true, false);

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Bei Richtext habe ich immer gute Erfahrung mir
rt.saveToDisk = true
gemacht, sollte in Java dann so heißen:
rt.setSaveToDisk(true)

Vielleicht hilft es
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Danke für den Hinweis, ich seh auch grad noch, dass ein RTItem eine update()-Methode hat.
Ich werd das mal testen.

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Funktioniert leider nicht! Beim Speichern des Dokuments bekomme ich eine Exception:

Code
Caused by: NotesException: Object has been removed
	at lotus.domino.NotesExceptionHelper.read(Unknown Source)
	at lotus.domino.NotesExceptionHolder._read(Unknown Source)
	at lotus.priv.CORBA.iiop.RepImpl.invoke(Unknown Source)
	at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
	at lotus.domino.corba._IDocumentStub.save(Unknown Source)
	at lotus.domino.cso.Document.save(Unknown Source)
	at lotus.domino.cso.Document.save(Unknown Source)

Nein, ich habe das Dokument nicht recycled. Wenn ich kein RT-Feld verwende, dann funktioniert das. Und wenn ich das setSaveToDisk nicht setze, funktioniert es auch.

*grrr*

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Könnte es sein, dass ich das RTItem in einer Methode einfüge, das Dokument aber später in einer anderen? Meine Vermutung ist die, dass das RTItem recycled wird, nachdem die Methode durchgelaufen ist (weil das Java-Objekt vom GC gelöscht wird), sodass es später bei doc.save() nicht mehr existiert.

Darf doch aber irgendwie nicht wahr sein?  :-:

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
GC recycled keine NotesObjecte, kannst Du das ganze debuggen und dir die Variablen ansehen?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Habe das nun umgebaut, indem ich keine RT-Items verwende. Nun habe ich das nächste Problem:

In der Doku zur Notes-API steht, dass beim Setzen von Feldwerten ein Vector mit Strings übergeben werden kann. Ich möchte Strings mit Zeilenumbrüchen splitten und als Multi-Value-Feld im Notes-Dokument hinterlegen.
Leider macht die API (mal wieder) nicht, was sie sollte, sondern erstellt mir ein Feld mit den Zeichenketten aus dem Vector, durch Leerzeichen zusammenkonkateniert.  :-:

Wie soll ich denn dann Multi-Value-Felder in die DB bekommen?! Mit String[] hab ich es probiert, das funktioniert nur bei Remote-Zugriff, bei lokalem Zugriff über den Notes-Client gibt es eine NotesException.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz