0

私のJSPには、2つの送信ボタンを持つ1つのフォーム(action="myServlet", method='post', enctype='multipart/form-data' )があります。

myServlet でどのボタンが押されたかを認識する必要があります。可能であれば、セッションの使用を避けたい...

これを行う方法についてのアイデアはありますか?

編集: - - - - - - - - - - - - - - - - - - - - - - - - -------------------------
以下のテキストはすべて編集後に追加されたものです。強いテキストも編集で追加されます。

現在、2 つではなく 3 つのボタンがあります。それぞれに JavaScript 関数を追加する必要がありました (onclick)。この関数は送信前にフィールドを検証するため、ボタンを変更して type=button を設定する必要がありました (送信ボタンではありません)。検証が false であっても、submit を使用すると、常にサーブレットが呼び出されるためです)。

どの送信ボタンが(サーブレットで)クリックされたかを認識するために使用していた方法は、リクエストで送信されたすべての FileItem を反復処理し、それらの名前が 3 つのボタンのいずれかの名前であるかどうか私のフォーム、そのボタンはユーザーがクリックしたものでした。ボタンに type=submit がある場合、これは完全に機能しましたが、現在は単純なボタンであるため、リクエストと共に送信されないようです。そのため、サーブレットで FileItems を取得すると、ボタンのどれもありません...だからトリック今まで使っていたのがダメ。

たとえば、次のような奇妙なことをせずにこれを行う方法がわかりません:クリックしたボタンの名前が入力されたフォームに非表示のテキストフィールドを追加します(javascriptを使用)...もっと良いアイデアはありますか?

4

2 に答える 2

0

ボタンに名前を割り当てる

    <form action="MyServlet.do">
        <input type="提出" value="提出 1" name="b1">
        <input type="submit" value="submit 2" name="b2">
    </フォーム>

次に、サーブレットで

    HashMap<String, String[]> map = (HashMap<String, String[]>) request.getParameterMap();
    out.println(map.containsKey("b1"));
    out.println(map.containsKey("b2"));

クリックされたものが送信され、true が返されます

于 2012-09-16T01:26:32.230 に答える
0

あなたの質問を正しく理解しているかどうかわかりません。それが、フォームのボタンが送信ボタンではなくなったことを私が理解していることです。したがって、どのボタンがクリックされたかを知りたいとします。わかりました、解決策をアドバイスできます。非表示の入力タイプを維持でき、任意のボタンをクリックすると、たとえばクリックと呼ばれる JavaScript 関数にバインドできます。これは、コーディングする必要がある JavaScript 関数の疑似です。

function click(){
 // step-1 get a list of all input type using getElementbyId function
 // step-2 check to which ones are buttons
 // step-3 now see whether names are equal to button one or two or three
 // step-4 base on which button was clicked set the value of hidden variable like button1,button2,button3
 // step-5 Retrieve the value of the hidden field in yourservlet and check which one was clicked.
 // step-6 submit the form
} 

これがあなたの質問に役立つことを願っています。BR、ベン

于 2012-09-17T09:22:36.347 に答える