0

Ich arbeite an einer Webanwendung entwickelt & gehostet auf Domino R9 Server (Non Xpages Web Application). Für jedes Formular sind WebQueryOpen- und WebQuerySave-Ereignisse für die serverseitige Geschäftslogik implementiert. Problem ist, dass auf jeder Seite, wenn die Seite vom Browser aktualisiert wird, die Homepage/das Formular der Anwendung geladen wird. Ich möchte den Zustand einer Seite in dieser Anwendung beibehalten. Gibt es außerdem eine Möglichkeit, eine Ajax-basierte Sitzungsbehandlung (Backend) zu implementieren, falls die Seite für einige Zeit inaktiv war und die Sitzung abgelaufen ist. Wenn ein Benutzer beispielsweise etwas im Web-Editor schreibt (implementiert in der neuesten Version von CKEditor) und wenn seine Sitzung automatisch gelöscht wird, sollte er in der Lage sein, mit möglichst wenig Aufwand zu beginnen und seine bereits geschriebenen Sachen nicht verloren gehen.So verwalten Sie den Seitenstatus in Domino Webanwendung

Antwort

0

Mein Vorschlag ist, WebQueryOpen und WebQuerySave nicht zu verwenden. Schreiben Sie stattdessen die Anwendung, um moderne Webtechnologien zu verwenden (Ajax, JSON, REST API), und Sie müssen die Seite nicht ständig speichern und erneut öffnen. Dadurch wirst du alles geben, was du willst.

Ich würde die Seite mit Standard-HTML und Javascript (oder sogar jQuery) erstellen, dann Ajax Aufrufe an Agenten auf dem Server zum Lesen/Schreiben von Daten.

Ich habe mehrere Präsentationen auf genau diese, mit vielen Codebeispielen und sogar fertigem Code gegeben herunterladen:
http://blog.texasswede.com/mwlug-2015/
http://blog.texasswede.com/my-mwlug-presentation-2/
http://blog.texasswede.com/my-connect-2017-demo-code/

+0

Ich stimme Ihnen vollkommen zu, aber das Problem ist, dass es eine große Anwendung ist, die in älteren Versionen von Lotus Domino, d. H. Domino 7.0, erstellt wurde. Ich habe einige aktuelle Funktionen eingebaut, aber Sie wissen, dass die Geschäftslogik nur begrenzt geändert werden kann. WebQueryOpen & Save sind auf allen Seiten der Anwendung implementiert und zwangsläufig muss ich sie durchlaufen, um etwas Neues zu erreichen. Meine aktuelle Herausforderung ist Seitenzustand Persistenz und AJAX-basierte Anrufe. – Fundi

+0

Schreiben Sie für die Sitzungsbehandlung eine Funktion, die ein temporäres Dokument im Back-End über einen Ajax-Aufruf aktualisiert. So würde ich es machen: Schreibe eine Javascript-Funktion, wo du die Werte aller Felder liest und sie zusammen mit der UNID des Dokuments an das Backend übergibst. Rufen Sie diese Funktion alle 2 Minuten (oder was immer Sie für angemessen halten) mit setInterval() auf. (Fortsetzung) –

+0

(Fortsetzung) Auf dem Server schreiben Sie ein Skript, das ein temporäres Dokument erstellt (verwenden Sie einen anderen Formularnamen als das normale Formular) und alle Werte darin einfügen. Wenn das Dokument gespeichert wird, verwenden Sie clearInterval(), um die Aktualisierungen zu stoppen und das temporäre Dokument auf dem Server zu löschen (mithilfe eines anderen Ajax-Aufrufs für dasselbe Skript, diesmal mit einer speziellen Nutzlast, die das temporäre Dokument löscht Dokument –

0

Sie die Inhalte aus allen Bereichen und CKEditor in einem speichern JSON-Zeichenfolge und auch die UNID (oder ein beliebiger "Primärschlüssel") für die aktuelle Entität (= Seite). Danach

, können Sie diese Zeichenfolge an den Server senden AJAX verwenden, oder als Alternative ...

... haben Sie versucht, HTML5 lokalen Speicher verwenden? Sehen Sie diese Seite: https://www.w3schools.com/html/html5_webstorage.asp Sagen Sie uns, wie geht es weiter !!!

+0

Das ist wirklich eine sehr gute Idee.Ich kann die DocUNID zusammen mit dem in "CKEditor" geschriebenen Text im Browser speichern und mit AJAX auf den Server posten.Wie kann ich es für die Persistenz des Seitenstatus verwenden? "WebQueryOpen/Save" ist auf allen Seiten implementiert. Und was ist, wenn ich mit Hilfe von AJAX die Daten auf dem Server posten kann und die Sitzung des Benutzers beendet ist, wie kann ich damit umgehen? Bietet Domino die Flexibilität der Erstellung des Sitzung über Code? – Fundi

+0

Ich denke, dass Notes die Sitzung nicht über Code erstellen kann. Auf dem Server können Sie in WebQueryOpen/Save die Informationen in einem normalen Dokument, in derselben Notes Datenbank oder in einer anderen Datenbank oder sogar in einer relationalen Datenbank speichern und abrufen. Wenn die Sitzung endet und der Benutzer erneut eingibt und ein Formular in der Webanwendung öffnet, können Sie die Informationen wiederherstellen und die Seite beispielsweise als JavaScript-Variable in den HTMLHeader des Formulars senden. Ich habe immer noch keinen lokalen HTML5-Speicher verwendet, aber es ist sehr interessant für Domino-Apps. –

Verwandte Themen