Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Tobias211 am 30.10.13 - 17:02:00

Titel: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: Tobias211 am 30.10.13 - 17:02:00
Hallo zusammen,

so gerne wie ich mich mit den XPages beschäftige.....manchmal treiben sie mich in den Wahnsinn!

Bei der Entwicklung einer Veranstaltungs-DB bin ich auf ein merkwürdiges Problem gestoßen:


Rahmen:

XPage 1 - Erzeugung von Dokumenten, die als "Vorlagen" für Veranstaltungen dienen
              - Binding mit Maske "Vorlagen"
              - Textfelder und RT-Felder

XPage 2 -  Erzeugung von Dokumenten, die auf Basis der Vorlagen eine "Veranstaltung" anlegen
                 und später über eine Ansicht aufgerufen werden können.
              -  Binding mit Maske "Veranstaltungen"
              -  Textfelder und RT-Felder


Vorgehensweise

1. Die XPage 1 besteht aus handelsüblichen Textfeldern und u. a. zwei RichText - Feldern in die
    neben Links, formatierte Text etc. kleine Bilder (z. B. Symbole, oder kleinere Fotos) abgelegt
    werden. Sobald alle Angaben gemacht sind, wird das Dokument gespeichert
    und fertig.
 
2. Sobald die Vorlage später mal wieder benötigt wird, wird das Dokument aufgerufen (ohne
    nochmals editiert zu werden) und über einen Button "Veranstaltung aus dieser Vorlage erstellen"
    für alle Felder SessionScope-Variablen erstellt. Beispiel für eines der RT-Felder:

                var val6 =  getComponent("Seminarinhalte").getValue();
                sessionScope.put("varSeminarinhalte", val6);


     um die Inhalte auf der anschließend aufgerufenen XPage 2 zu
     übernehmen (Neues Dokument!). Die Übernahme der Daten erfolgt bei den
     RT-Feldern über den Vorgabewert des Feldes. Beispiel:

                 sessionScope.get("varSeminarinhalte")

3. Auf der XPage 2 werden dann individuelle Daten in weiteren Feldern hinzugefügt (z. B. Datum,
    Beginn etc.) und das neue Dokument abgespeichert.

4. Die Mitarbeiter können das Veranstaltungsdokument über eine View aufrufen und sich über die
    entsprechende Veranstaltung informieren, sich dort anmelden und und und....Fertig!


Problem

Ich musste leider feststellen, dass das Veranstaltungsdokument aus der Xpage2 die Inhalte der RT-Felder nicht sauber speichert, wenn ich "keine Änderung" nach Übernahme der Inhalte aus XPage 1 vornehme....das Dokument also ohne diese Felder zu berühren, speichere.

Ändere ich stattdessen den Inhalt...z. B. durch hinzufügen eines Zeichens, oder durch manuelles ausschneiden und wieder einfügen des Inhaltes (ich weiß leider nicht, wie ich das per Script mache....), dann werden zumindest die Textformatierungen und Links beim Speichern sauber eingetragen......allerdings bleibt es dabei, das die Bilder nicht angezeigt werden, nachdem das Dokument gespeichert und wieder aufgerufen wurde.


Analysen

Das Problem habe ich nur bei den Veranstaltungen (also Dokumenten aus XPage2)! Wenn ich ein neues Dokument über die XPage1 erzeuge (also eine Vorlage), dann werden die Texte und Bilder bis zum jüngsten Tag sauber und ordentlich in den besagten Feldern angezeigt.

Das Problem beschränkt sich innerhalb des Dokumentes auch nur auf die RT-Felder. Ganz normale Textfelder werden sauber gespeichert und ohne zu ändern auch nach speichern sauber angezeigt.

Ich habe mir die Databindings jetzt mehrfach angesehen. Hier scheint alles i. O. zu sein. Jede XPage ist sauber mit der ensprechenden Form verbunden. Auch die Feldtypen sind als RichText vermerkt.

Hr. Google und die Suchfunktion sind natürlich schon ausführlich gefragt worden. Ein Arbeitskollege sagt mir, dass er schonmal irgendwo etwas ähnliches davon gelesen hätte, dass es sich um einen Bug handele, dass die RT-Felder nach füllen durch Vorgabewerte, bei "nicht verändern" nicht gespeichert würden. Genaueres konnte er mir aber auch nicht sagen......


Meine Bitte

Hat jemand ein ähnliches Problem schonmal gehabt.....und konnte es lösen? Oder könnte mir jemand einen Hinweis geben, wie ich diesen Fehler beheben kann?

Wäre nett, wenn mir jemand einen Tipp geben könnte.

Danke und Gruß Tobias

P. S.: Danke für`s bis hierhin mitlesen.....ist ganz schön viel geworden..... :o :o :o :o


Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: pram am 30.10.13 - 19:16:48
Welche Notes-Version hast du?

Weil dies ist mir beim Überfliegen der Fixlist aufgefallen und hört sich so ähnlich an:
http://www-10.lotus.com/ldd/fixlist.nsf/8ed1b46cfdba8957852570c90054623b/a3f86c37d0b0373885257c0c0057f3d7?OpenDocument
http://www-10.lotus.com/ldd/fixlist.nsf/5c087391999d06e7852569280062619d/f439f8be4bd7963785257b26007378ce?OpenDocument

Gruß
Roland
Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: Tobias211 am 30.10.13 - 20:08:40
Hallo Roland,

wir nutzen die Version 8.5.3 FP4.

Tja, sieht so aus als wäre es tatsächlich "ein Fehler im Detail".

Ich werde es morgen mal mit nur einem RT-Feld probieren. (SPR# SODY8RGHCS - Fixed an issue with using multiple Rich Text or File Upload controls on one XPage .....)

Vielleicht habe ich ja Glück. Wenn alle Stricke reißen, gibt es einen dicken Vermerk auf der Seite, dass bitte keine Bilder zu verwenden sind. Wäre zwar sehr schade, aber bis Version 9.xxxx eben so.

Ich werde berichten.

Gruß Tobias
Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: pram am 30.10.13 - 21:20:12

Ich könnte mir weiterhin vorstellen, dass bei einem getComponent("Seminarinhalte").getValue(); keine Bilder/Anhänge kopiert werden, sondern nur der HTML-Text

Zielführender ist es eventuell, wenn du über 
  sessionScope.inhalt=document1.getValue("feldname")
den Inhalt ausliest und über
  documentNeu.setValue("feldname", sessionScope.inhalt)
wieder zurückschreibst (aber auch hier keine Gewähr, dass dies funktioniert)

Gruß
Roland

Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: Tobias211 am 31.10.13 - 15:08:21
Hallo zusammen,

So, hab`s heute mal mit nur einem RT-Feld versucht. Hat leider nicht geklappt. Wenn ich das RT-Feld auf der XPage2 unberührt lasse, werden die Angaben (weder Text noch Bilder) nicht gespeichert und das Feld bleibt beim späteren Aufruf leer.

Auch das Anpassen des SessionScope-Abrufs von Roland hat leider keinen Erfolg gebracht.
Nun denn....., was soll`s!

Jetzt war es ja so, dass ich durch manuelles ausschneiden und wieder einfügen des Inhaltes zumindest formatierte Texte und Links behalten habe. Bevor ich jetzt einen Vermerk an das RT-Feld schreibe, dass man doch bitte einmal STRG+A / STRG+X / STRG+V betätigen solle, bevor man das Dokument speichert, würde ich zumindest dies im Hintergrund durchführen lassen.

Also Abruf der SessionScope-Variable, anschließend einmal Inhalt ausschneiden und wieder einfügen lassen. (damit sich der Feldinhalt geändert hat....)

Leider weiss ich die Befehlsfolge hierfür nicht.

Könnte sie mir jemand nennen? Dann hätte ich zumindest eine 80/20 - Lösung.

Gruß Tobias
Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: umi am 31.10.13 - 15:30:22
Moin

Evtl. hilft eine kleine Anpassung am Schritt 2.
Anstatt die Felder im Session Scope abzulegen könntest Du einfach die DocumentUniqueID speichern und die Daten beim Öffnen der Xpage 2 holen.
Dann hast du Zugriff auf das darunterliegende Notesdokument und kannst die RichtextITems komplett kopieren.

Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: Tobias211 am 01.11.13 - 11:54:35
Hallo Urs,

die DocUniniqueID speichere ich bereite im Dokument. allerdings stehe ich gerade auf dem Schlauch, wie ich mir den Feldinhalt beim Öffnen der Xpage 2 holen soll.

Aber wie kopiere ich nun die Inhalte aus dem Dokument der XPage 1 auf die XPage 2. bisher hab ich das halt immer mit der SessionScope Variable gemacht.

Könntest Du mir bitte einen Codeschnippsel hierfür geben?

Gruß Tobias
Titel: Re: XPages - RichTextfelder speichern Inhalte nicht sauber ab
Beitrag von: Sven Hasselbach am 11.12.13 - 15:59:05
Das Problem liegt m.W. dran, das die MIME-Konvertierung nicht gemacht wird, wenn der Editor auf diese Weise "befüllt" wird.
Dadurch geht die Formatierung etc verloren.

Erst wenn im Client eine Änderung vorgenommen wird, registriert der Editor, das der Inhalt neu konvertiert werden muss, so dass beim nächsten Update/Speichern die Konvertierung durchgeführt wird.

Eventuell reicht ein Partial Refresh eines um den Editior liegenden Elementes aus (nur die Editore-Komponente reicht nicht), um die Konvertierung anzustoßen.

Ansonsten hat Per Henrik Lausten mal über das Problem gebloggt:

http://per.lausten.dk/blog/2012/12/xpages-dynamically-updating-rich-text-content-in-a-ckeditor.html (http://per.lausten.dk/blog/2012/12/xpages-dynamically-updating-rich-text-content-in-a-ckeditor.html)