2009-04-09 6 views
8

Ich habe mehrere verschiedene Schaltflächen zum Senden auf meiner JSP in einem Formular-Tag, die alle auf das gleiche Servlet zeigen. Ich muss wissen, welche Schaltfläche zum Senden geklickt wurde. Wie kann ich herausfinden, auf welche Schaltfläche geklickt wurde?Wie kann ich feststellen, welche Schaltfläche zum Senden geklickt wurde

+1

sind sie

+0

interessiert dich das in der Steuerung in Javascript? – mkoryak

+1

gut IE6 sendet einen Wert für alle Tags, ob angeklickt oder nicht –

Antwort

12

Wenn request.getParameter ("button-name") nicht null ist, dann ist dies die Taste, die gedrückt wurde

4

Jede Schaltfläche Absenden sollte eine unterschiedliche name:

<input type="submit" value="This is a submit button" name="submit1"> 
<input type="submit" value="Another submit button" name="submit2"> 
<input type="submit" value="Yet another submit button!" name="submit3"> 

Dann wird der Name des Eingangs in den Parametern gesendet erscheinen sollte, wo immer das Formular entsendet, so etwas wie

post.jsp?key=value&submit3=&.... 

http://www.w3schools.com/tags/tag_input.asp

+1

Nein, es wird nicht in der Abfragezeichenfolge angezeigt. – crauscher

1

Dies ist ähnlich wie die DispatchAction in Struts. Was sie tun, ist ein verstecktes Feld zu haben, und wenn Sie das Formular abschicken, setzen Sie onClick() den Wert, um anzugeben, welche Aktion ausgeführt wird.

<input type="hidden" name="dispatchAction"/> 
<input type="submit" value="Edit" onClick="setDispatchAction('edit')"> 
<input type="submit" value="Delete" onClick="setDispatchAction('delete')"> 
0
<button type="submit" name="somename" value="button1">some text</button> 
<button type="submit" name="somename" value="button2">some other text</button> 

finden Sie die Post-Variable "somename" haben auf dem entsprechenden Wert, unabhängig davon, der dispalyed Wert.

+1

Warnung: MSIE sendet den Textkörper der Schaltfläche als "Text" oder "irgendeinen anderen Text" als Parameterwert, nicht als Attribut "Wert"! Sie sollten nicht allen Tasten den gleichen Namen geben, sondern einen anderen Namen und nur das Vorhandensein des Tastennamens abfangen. I.e. Wenn es nicht null ist, wird es gedrückt, andernfalls wird es nicht gedrückt, wenn es null ist. – BalusC