Schnelle Eingabe bei Webanwendung

Status
Nicht offen für weitere Antworten.

miketech

Bekanntes Mitglied
Hi zusammen,

ich möchte eine Webanwendung auf Basis von JSF schreiben, die aber eine ähnlich schnelle Benutzerinteraktion ermöglicht, wie z.B. eine Swing-Anwendung.

Konkret: Ich habe ein Webformular (Mit Grafiken, Links etc.) und einem Eingabefeld. Hier sollen Zahlen eingegeben werden und diese Zahlen müssen in eine Datenbank geschrieben werden. Die Eingabe der Zahlen soll schnell erfolgen können. Der Benutzer soll also in der Lage sein "2<Enter>", "5<Enter>", "6<Enter>" etc. innerhalb von z.B. einer Sekunde eingeben können, ohne dass eine dieser Zahlen nicht gespeichert werden. Eine Swing-Anwendung reagiert natürlich schnell genug.

Bei einer Webanwendung habe ich nun das Problem, dass ich im Normfall einen Reload der Seite habe. Das dauert eindeutig zu lange, zumindest bei meinen Tests mit Tomcat und JSF auf meiner Kiste. Das Laden der Seite ist nicht langsam, aber auch nicht schnell genug :)

Ich suche daher nach einer Alternative. Zwei Möglichkeiten fallen mir hierzu ein:

  1. Einmal in einem versteckten Frame ein Servlet aufrufen, welches die Daten speichert.
  2. Alternativ das ganze asynchron mit AJAX losschicken. Vielleicht geht das mit ajax4jsf ja recht einfach.

Hat vielleicht jemand noch eine andere Idee oder kann mir Tipps geben, wie ich das Problem lösen sollte?

Kann ich denn irgendwie dem Benutzer garantieren, ob der Eintrag erfolgreich gespeichert worden ist? Vielleicht lässt sich das ja auch irgendwie mit AJAX lösen, dass in der Callback-Methode im Falle eines Fehlers eine Nachricht auf der JSF-Seite dargestellt werden kann.

Würde mich über ein paar Anregungen freuen :)

Gruß

Mike
 

KSG9|sebastian

Top Contributor
Hi,

du willst Daten direkt bei der Eingabe schreiben? Wie willst du den das vom Datenmodel her realisieren, und was passiert wenn einem Benutzer auffällt dass die Zahlen die er eingegeben hat eigentlich falsch sind??
Die einzige sinnvolle und schnelle Möglichkeit ist imho per async. Request (Ajax).
Per Servlet und JavaScript ist schon sehr krude..
 

miketech

Bekanntes Mitglied
Hi,

also natürlich erst, wenn der Benutzer die Daten mit <Enter> abschickt. Aber es wird halt eine Abfolge der Art sein: "5<Enter>", "2<Enter>" etc.

Man kann das ja in einer Liste speichern und die Liste vielleicht sogar anzeigen. Also eine Tabelle auf der Seite, die nach dem Abschicken neu dargestellt wird (mit reRender) und welche die gespeicherten Daten enthält. Der User könnte dann im Bedarfsfall auswählen, welche Eingabe er rückgängig machen möchte. Hui oder pfui?

Wie gesagt: Es geht einfach darum, dass diese Zahlen gespeichert werden sollen.

Gruß

Mike
 

The_S

Top Contributor
joa, also ich würde das so machen:

Eingabefeld mit JS hinterlegt. Bei einem Enter Eingabe auslesen und in eine Liste schreiben. Liste die Möglichkeit zum Removen geben. Anschließend alle Eingaben durch einen Button bestätigen lassen. Daten wegschreiben.
 

miketech

Bekanntes Mitglied
Hi,

dann ist das Problem, dass wenn der Anwender das Browserfenster aus Versehen schließt ist alles weg. Es sollte schon automatisch in die Datenbank geschrieben werden. Aber es ist ja kein Problem das Einfügen mit einem Delete rückgängig zu machen.

Aber ich sehe schon: Meine Idee mit dem Frame scheint wohl aus einer anderen Zeit zu stammen :) Ajax heißt wohl hier die Lösung.

Gruß

Mike
 

robertpic71

Bekanntes Mitglied
miketech hat gesagt.:
Aber ich sehe schon: Meine Idee mit dem Frame scheint wohl aus einer anderen Zeit zu stammen :) Ajax heißt wohl hier die Lösung.

Auch ich habe vor neuere Anwendungen auf Ajaxbasis zu erstellen.

Außer einem Katalog habe ich nur ein paar kleinere interne Anwendungen damit erstellt und sehe da keine großen Geschwindigkeitsnachteile gegenüber Swing (im Intranet).

Ich habe hier noch eine Demo von meinen Tests: Ajax Eingabe Demo.

Im Intranet gibt es überhaupt keine spürbare Verzögerung, auch im Internet bleibt die Antwortzeit (bei schneller Anbindung) deutlich unter einer Sekunde. In diesem Fall passiert das Summieren und das Erweitern der Liste serverseitig. D.h. nach jedem Enter kommt der Server (= Javaprogramm) zum Zug, rechnet, updatet die Bildschirmfelder und weiter gehts. Die Geschwindigkeiten ändern sich auch nicht, wenn ein paar Datenbankoperationen dazukommen.

Womit man JSF am besten Ajax-tauglich macht, weiß ich allerdings auch nicht. Nachdem für mich nur Web mit Ajax in Betracht kommt, habe ich gleich ein Ajax-Framework ZK (Ajax without Javascript) verwendet.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben