Zum Inhalt springen

[JSP] neues Fenster bei Absenden von Formulardaten


mkScheller

Empfohlene Beiträge

Servus Kollegen,

ich habe eine JSP [auswahl.jsp] mit einem Formular und etlichen Eingabedaten sowie checkboxes und einem Continue-Button.

Wenn der User nun auf den Continue-Button klickt, sollen die Formulardaten an eine andere JSP [anzeige.jsp] innerhalb eines neu erscheinenden Fensters gesendet werden. Sprich: Die auswahl.jsp soll nicht neu mit 'ihren' Formulardaten geladen werden, sondern ein neues Browser-Fenster soll aufgehen, in welches anzeige.jsp mit den Formulardaten geladen wird.

Und letztendlich noch eine Frage: Wie geht das?

Danke für support.

Kann man denn mittels onSubmit="window.open..." die Formulardaten an das neue window schicken? und wie ist das denn mit action="anzeige.jsp"

Link zu diesem Kommentar
Auf anderen Seiten teilen

du kannst im <Form>-Tag, wie bei einem Link, das Target attribut verwenden.

<form target="_blank"......>
d.h. du kannst mit onsubmit über window.open ein neues Fenster offen und dieses auch als Target verwenden.
<form target="neuW" onsubmit="window.open('','neuW','fensterattributte.... '); .......>"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn der User nun auf den Continue-Button klickt, sollen die Formulardaten an eine andere JSP [anzeige.jsp] innerhalb eines neu erscheinenden Fensters gesendet werden.

Das hat mit JSP erstmal wenig zu tun, sondern mit HTML. Und die Lösung hier ist das target Attribut im <form> Tag.

http://de.selfhtml.org/html/formulare/index.htm

Kann man denn mittels onSubmit="window.open..." die Formulardaten an das neue window schicken?

Nein, onSubmit wird sozusagen als Callback aufgerufen um dem System mitzuteilen "Ich bin kurz davor, das Formular abzuschicken, check mal ob noch irgendwas gemacht werden muss". Das Ziel darin zu ändern wäre auch äusserst schlechter Stil.

Generell: Beschäftige dich genauer damit, was Formulardaten überhaupt sind und wie sie vom Browser und vom Server verarbeitet werden und besonders wer für was zuständig ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, onSubmit wird sozusagen als Callback aufgerufen um dem System mitzuteilen "Ich bin kurz davor, das Formular abzuschicken, check mal ob noch irgendwas gemacht werden muss". Das Ziel darin zu ändern wäre auch äusserst schlechter Stil.

*erstmal zustimm*

aber mittels onSubmit ein neues Fenster zu offnen und dann mittels Target den inhalt darin anzuzeigen ist in meinen augen kein schlechter stil!

Link zu diesem Kommentar
Auf anderen Seiten teilen

*erstmal zustimm*

aber mittels onSubmit ein neues Fenster zu offnen und dann mittels Target den inhalt darin anzuzeigen ist in meinen augen kein schlechter stil!

doch meiner Meinung nach ist das auch schlechter stil!

Warum nicht einfach das JavaScript unabhängige "target" attribut des Formulars verwenden?

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn man das neue Fenster mit Standardwerten haben möchte (als _blank) ist das ohne Java besser...

Hier mal ein BSP mit JS:

 <form action="http://www.voteonline2.de/cgi-neu/vote0n.cgi?action=results&thema=84696" method="POST" onsubmit="window.open('';'clickvote';'width=486,height=527,scrollbars=yes,resizable=yes,menubar=no,location=no');" target="clickvote">

Link zu diesem Kommentar
Auf anderen Seiten teilen

*erstmal zustimm*

aber mittels onSubmit ein neues Fenster zu offnen und dann mittels Target den inhalt darin anzuzeigen ist in meinen augen kein schlechter stil!

Das kommt drauf an worüber wir genau sprechen. Ein neues Fenster zu öffnen ist kein Problem und auch nicht zwangsläufig schlechter Stil (wobei ich Popups immer für schlechten Stil halte aber das ist ein anderes Thema).

Das Problem ist ein anderes: Wenn ich im onSubmit ein window.open ausführe, dann werden sämtliche Daten, die ich im Formular eingetragen habe nicht mit übernommen und dann wäre das ganze Formular sinnlos.

Und wenn mir jetzt einer kommt und sagt, ich kann ja mit JS die Formular-Felder auslesen und an die URL als Parameter anhängen, dann ist das sowas von schlechter Stil, dass ich da überhaupt nicht erst dran denken würde :)

wenn man das neue Fenster mit Standardwerten haben möchte (als _blank) ist das ohne Java besser...
Java hab ich da sowieso nirgendwo gesehen.

Merke: Java != JavaScript.

Ausser dem Namen haben diese beiden Sprachen sehr wenig gemeinsam.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist ein anderes: Wenn ich im onSubmit ein window.open ausführe, dann werden sämtliche Daten, die ich im Formular eingetragen habe nicht mit übernommen und dann wäre das ganze Formular sinnlos.

Doch werden sie, weil die Daten weiterhin an die Datei gesendet werden, nur das diese Datei nicht im Aktuellen Fenster angezeigt wird sonder über das Target-Attribut in das gerade geöffnete Fenster gelanden wird.

Java hab ich da sowieso nirgendwo gesehen.

Merke: Java != JavaScript.

Ausser dem Namen haben diese beiden Sprachen sehr wenig gemeinsam.

Sorry meinte natürlich JavaScript ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Doch werden sie, weil die Daten weiterhin an die Datei gesendet werden, nur das diese Datei nicht im Aktuellen Fenster angezeigt wird sonder über das Target-Attribut in das gerade geöffnete Fenster gelanden wird.

Ich redete von den Daten, die an das neu geöffnete Fenster gehen. Klar, das Original-Formular wird weiterhin an die Original-Action-URL weitergeleitet. Mit window.open bekommst du kein target gewesechselst sondern so (ungetestet):

<html>

  <head>

    <script language="JavaScript">

      function formSubmit(theForm) {

        theForm.target = "_blank";

      }

    </script>

  </head>

  <body>


    [...]


    <form name="form1" method="post" target="_self" onsubmit="formSubmit(this)">

      [...]

    </form>


  </body>

</html>
Es sei denn, du erklärst mir, wie ich die den Inhalt der Felder <b>f1</b> und <b>f2</b> an die Seite <b>s2.html</b> übertragen bekomme:

  <script language="JavaScript">

    function formSubmit(theForm) {


      // So, hier bekomme ich die Werte nicht mit übergeben!

      window.open("s2.html", "_blank");


    }

  </script>


  <form name="form1" action="s1.html" method="post" onsubmit="formSubmit(this)">


    <input name="f1" value="f1_value" />

    <input name="f2" value="f2_value" />


  </form>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey Leute,

ich glaube wir reden an einander vorbei.

Deshalb hier mal mein Beispiel wie ich es meine:

die Eingabemaske:

<html>

<head>

<title>Form-Test</title>

</head>

<body>

<form action="ausgabe.php" name="form1" method="post" onsubmit="window.open('','Ausgabe','width=486,height=527,scrollbars=yes,resizable=yes,menubar=no,location=no');" target="Ausgabe">

Testeingabe1:<input type="text" name="test1">

Testeingabe2:<input type="text" name="test2">

<input type="submit" value="absenden">

</form>

</body>

</html>

die Ausgabemaske:

<html>
<head>
<title>Form-Test</title>
</head>
<body>
<?
echo "Eingabe1 = ".$test1;
echo "<br>";
echo "Eingabe2 = ".$test2;
?>
</body>
</html>[/PHP]

Das ganze Testen könnt ihr unter:

www.jugendforum-magdeburg.de/pcnico/fi-forum/

Es wird ein neues Fenster mit window.open geöffnet und in dieses wird die ausgabe datei

geladen. Ganz ohne Javascript (bis aufs Fensteröffnen natürlich)

Gruß der Nico

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow das ist in der Tat ein interessantes Verhalten - hätte nie geglaubt, dass das funktioniert, wenn ich es nicht selber gesehen hätte :)

Wie auch immer, ich halte das so in der Art, wie du es verwendest trotzdem für alles andere als sauber - ich finde es einfach unnütz mit JavaScript zu arbeiten, wo es nicht wirklich benötigt wird. Aber okay, das muss jeder mit sich selber ausmachen :cool:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow das ist in der Tat ein interessantes Verhalten - hätte nie geglaubt, dass das funktioniert, wenn ich es nicht selber gesehen hätte :)

Wie auch immer, ich halte das so in der Art, wie du es verwendest trotzdem für alles andere als sauber - ich finde es einfach unnütz mit JavaScript zu arbeiten, wo es nicht wirklich benötigt wird. Aber okay, das muss jeder mit sich selber ausmachen :cool:

Ob es sauber ist oder nicht, darüber kann man streiten :rolleyes:

Ich verwende diese Methode auch nicht, hab sie nur mal geshen und wenn mkScheller

halt sowas sucht soll er es auch bekommen. :marine

Wie gesagt, der 2 Wert beim window.open kann wie ein Framename verwendet werden, mittels Target Attribut.

PS: echt cool das man hier so toll diskutieren kann :uli

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob es sauber ist oder nicht, darüber kann man streiten
Naja was der eine als sauber ansieht ist für den nächsten schon wieder das reinste Schlachtfeld. Ich gebe zu, wenn ich Quellcode sehe, den ich vor zwei oder drei Jahren geschrieben habe dann muss ich mir auch ab und zu an den Kopf fassen und denke "Was hast du dir denn dabei gedacht? Hast du dir da überhaupt was bei gedacht?"

und wenn mkScheller halt sowas sucht soll er es auch bekommen.
Ne ne, wir verderben hier niemanden :)

Im ernst, ich denke es ist viel wichtiger jemandem zu erklären, wieso die Lösung, die er anstrebt nicht bzw. nur über dreckige Umwege machbar ist anstatt einfach einen Codeschnipsel zu präsentieren und zu sagen "So, hier haste was - fertig."

PS: echt cool das man hier so toll diskutieren kann
Well... in diesem Thread scheint das so zu sein, bei anderen Beiträgen wage ich diese Behauptung anzuzweifeln *g*
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi leute,

danke für die zahlreichen Antworten und die Lösung meines Problems.

Da ich die Variante von pc-nico sehr gut und auch sehr >sauber< finde, werde ich diese einsetzen.

Habe es ohne PHP aber doch mit request.getParameter bzw einer JavaKlasse die HttpServlet erweitert gemacht/werde es noch machen - d.h. im Test gerade eben hat es funktioniert.

(war die ersten beiden tage der Woche unterwegs, daher die späte Antwort und das späte Dankeschön)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Hi Kollegen,

nun stellt sich ein erweitertes Problem:

<form name="fnCaro" action="/cars/carHTML" method="get" target="Ausgabe" onsubmit="if (validateOptions()) {window.open('', 'Ausgabe','width=640,height=480,scrollbars=yes,resizable=yes,menubar=no,location=no');}">
Erklärung Bei Überprüfung durch onsubmit wird eine Methode aufgerufen, die entweder true oder false zurückgibt. Anhand dieses Rückgabewertes sollte nun das neue Fenster geöffnet werden und die Formulardaten abgeschiuckt werden oder halt nicht. Das Problem Das Problem ist, dass die neue Seite sich auch öffnet, wenn false zurückgegeben wird. Und das weil, so reime ich mir das zusammen, dort ein target angegeben wird, was vorher nie verwendet/angesprochen/reserviert wurde. Die Lösung In die Funktion, die die Werte überprüft [validateOptions()] muss man das window.open('','Ausgabe',...) reinbauen und das onsubmit muss angepasst werden:
<form name="fnCaro" ... target="Ausgabe" onsubmit="return validateOptions();">

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...