2 Servlets mit 2 Submit-Buttons in Formular aufrufen
Andreas
- html
Abhängig davon, ob der Button "Bearbeiten" oder "Löschen" betätigt wurde, soll entweder das Servlet "Bearbeiten" oder "Löschen" über das action-Attribut der Form aufgerufen werden. Ist es irgendwie möglich, abhängig von dem Button der betätigt wurde das entsprechende Servlet aufzurufen?
<form action="">
...
<input type="submit" value="Bearbeiten">
<input type="submit" value="Löschen">
...
</form>
Hallo!
Abhängig davon, ob der Button "Bearbeiten" oder "Löschen" betätigt wurde, soll entweder das Servlet "Bearbeiten" oder "Löschen" über das action-Attribut der Form aufgerufen werden. Ist es irgendwie möglich, abhängig von dem Button der betätigt wurde das entsprechende Servlet aufzurufen?
Läßt sich nur mit JS lösen -> schlechte Lösung.
Ich würde es so ändern, dass sowohl Bearbeiten als auch Löschen mit demselben Servlet aufgerufen werden.
mfg
frafu
Dann gibt es allerdings folgendes Problem:
Ich kann zwar bei beiden Submit-Buttons das gleiche Servlet aufrufen und innherhalb des Servlets dann anhand der übergebennen Parameter entscheiden, welche Operation (löschen oder ändern) aufgerufen wird.
Die zu löschenden Elemente können mit Checkboxes markiert werden. Die zu ändernden Elemente mit Radion-Buttons.
Annahme:
Nutzer markiert zunächst 3 Elemente die gelöscht werden sollen. Anschließend entscheidet er sich anders. Er will nun stattdessen ein Element modifizieren. Deshalb markiert er das zu ändernde Element und betätigt den Button ändern. Nun sind die drei Elemente die gelöscht werden sollen aber immernoch markiert und werden demnach auch vom Servlet gelöscht.
Ich müßte also irgendwie innerhalb des Servlets herausfinden können, ob der Button "delete" oder "modify" betätigt wurde. Geht das irgendwie?
Mahlzeit Andreas,
Ich kann zwar bei beiden Submit-Buttons das gleiche Servlet aufrufen und innherhalb des Servlets dann anhand der übergebennen Parameter entscheiden, welche Operation (löschen oder ändern) aufgerufen wird.
Richtig.
Ich müßte also irgendwie innerhalb des Servlets herausfinden können, ob der Button "delete" oder "modify" betätigt wurde. Geht das irgendwie?
Ja sicher, hast Du doch oben beschrieben ... der http://de.selfhtml.org/html/formulare/formularbuttons.htm@title=Button, der das Formular abgeschickt hat, wird beim Absenden mit übergeben (bzw. dessen "name"-Attribut).
MfG,
EKKi
Dann kann aber auch sowas entstehen, wenn ich den Button Ändern betätige:
http://localhost:8080/office/servlets/HandleRequest?delete=41&modify=41&delete=22
Demnach werden sowohl Parameter mit dem Namen delete als auch mit dem Namen modify übergeben.
Delete Attribute sollten aber nicht übergeben werden, wenn ich den Button "ändern" betätige.
Kann ich das irgendwie ändern das folgendes eintritt:
betätige ich ändern, so werden nur modify Attribute übergeben.
betätige ich delete, so werden nur delete Attribute übergeben.
Hi,
Dann kann aber auch sowas entstehen, wenn ich den Button Ändern betätige:
http://localhost:8080/office/servlets/HandleRequest?delete=41&modify=41&delete=22
Demnach werden sowohl Parameter mit dem Namen delete als auch mit dem Namen modify übergeben.
Na und?
Dann beruecksichtigst du halt nur die, die zum Button "passen".
Kann ich das irgendwie ändern das folgendes eintritt:
betätige ich ändern, so werden nur modify Attribute übergeben.
betätige ich delete, so werden nur delete Attribute übergeben.
Mit zwei Formularen, sicher.
MfG ChrisB
Mahlzeit Andreas,
http://localhost:8080/office/servlets/HandleRequest?delete=41&modify=41&delete=22
Demnach werden sowohl Parameter mit dem Namen delete als auch mit dem Namen modify übergeben.
Ja und?
Delete Attribute sollten aber nicht übergeben werden, wenn ich den Button "ändern" betätige.
Was übergeben wird, kannst Du sowieso nicht beeinflussen - niemand ist gezwungen, Dein Formular zu verwenden, um Requests an Deine Servlets zu schicken. Es ist absolut notwendig, dass Deine Servlets die übergebenen Parameter auf Plausibilität auswerten und nur die verwenden, die sinnvoll sind.
Wenn Du - wie ich schrieb - den Submit-Buttons entsprechende Namen gibst, dann sollten Requests wie z.B.
http://localhost:8080/office/servlets/HandleRequest?action=delete&delete=41&modify=41&delete=22
http://localhost:8080/office/servlets/HandleRequest?action=modify&delete=41&modify=41&delete=22
beim Server ankommen - und der kann dann zweifelsfrei anhand der "action" entscheiden, welche Parameter er benutzen soll und welche er verwerfen kann.
MfG,
EKKi