Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: masseur81 am 01.12.08 - 06:58:31

Titel: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: masseur81 am 01.12.08 - 06:58:31
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);
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: jBubbleBoy am 01.12.08 - 08:41:20
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
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: masseur81 am 01.12.08 - 12:18:50
Danke für den Hinweis, ich seh auch grad noch, dass ein RTItem eine update()-Methode hat.
Ich werd das mal testen.
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: masseur81 am 01.12.08 - 18:13:15
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*
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: masseur81 am 01.12.08 - 18:39:21
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?  :-:
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: jBubbleBoy am 01.12.08 - 20:59:22
GC recycled keine NotesObjecte, kannst Du das ganze debuggen und dir die Variablen ansehen?
Titel: Re: RichTextItem bei Remote-Zugriff per Java-NotesAPI nicht angelegt
Beitrag von: masseur81 am 09.12.08 - 10:00:35
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.