Christoph Schnauß: Daten aus Servlet-generierter Seite auslesen

Beitrag lesen

tja ...

also ein Frameset. Hat drei Frames ("choice", "actions", "edit").

Okay, deine Frames haben also Namen.

"choice" zeigt Auszüge aller Datensätze der Datenbank in einer Tabelle an. Klickt man einen davon an, wird der Primärschlüssel des betreffenden Datensatzes aus der DB gelesen, in ein verstecktes Formularfeld im selben Frame geschrieben und von dort aus an den Server gesendet. Die Aufgabe des Servlets ist es nun, den betreffenden Datensatz vollständig in das Frame "edit" zu laden. Die Daten werden dazu vom Servlet logischerweise in HTML verpackt (ein Formular mit name-Tag, fürt jedes Attribut des Datensatzes ein eigenes Inputfeld, auch hier alle benannt). Soweit, sogut.

Auch gut, bis dahin kann ich dir folgen, und da sollte es auch noch keinen Fehler geben.

Nun stehen also alle Attribute eines Datensatzes zum, editieren zur Verfügung.

Nein, das tun sie nicht, weil: "Die Daten werden dazu vom Servlet logischerweise in HTML verpackt". Es ist also ein ganz bestimmter Datensatz ausgelesen und in HTML verpackt worden, mehr nicht.

Klickt man zB auf "Speichern", wird innerhalb des action-Frames eine JS-Funktion gestartet, die nun mittels "parent.edit" auf die einzelnen Inputfelder zugreift, die Daten dort ausliest und wieder an das Servlet sendet.

Das klingt viel zu theoretisch. Und da du nicht zum erstenmal schreibst, weißt du auch, daß ich dir _das_ nicht so einfach glauben kann  -  jedenfalls so lange nicht, bis ich deinen Javascript-Code gesehen habe. Ich bin relativ sicher, daß in diesem Javascript-Code der "Fehler" liegt. Zusätzlich verstehe ich nicht, warum du auf einmal noch Javascript nimmst, obwohl du doch bereits mit JSP arbeitest.

Klicke ich allerdings auf "speichern", meldet mir der IE "Zugriff verweigert".

Klar. Javascript kann ja nicht einfach so mal schnell auf den Server zugreifen.

Also habe ich andersherum spaßeshalber in den HTML-Output des Servlets ein "document.write()" auf irgendwelche anderen Frames ausprobiert. Überall erhalte ich diese Fehlermeldung, außer im Frame "choice" (dieses wird auch durch das Servlet dargestellt).

Auch klar. Dein Frameset verlangt eben nicht "document.write", sondern so etwas Ähnliches wie "Framename.write" (Näheres dazu in SELFHTML und im Forumsarchiv). Aber ich würde es an deiner Stelle gar nicht erst mit Javascript machen, sondern bei JSP und JAVA bleiben, das reicht doch.

Grüße aus Berlin

Christoph S.