- ベストアンサー
フォーム上で押されたボタンによってサーブレットの処理を変えたい
- JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、押されたボタンによってサーブレット内での処理を切り替える方法を教えてください。
- 各ボタンに対応するサーブレットを作成し、JavaScriptを使用してボタンごとに適切なサーブレットへのリクエストを送る方法も考えられますが、できれば一つのサーブレットで処理を済ませたいです。
- サーブレットの内部で、押されたボタンの情報を取得し、それに応じて異なるSQL文を実行し、適切なJSPページを生成する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
お恥ずかしい限りです。 前述の例、動くわけがありませんね(汗) 2つめの例、書きなおします。 --------------------------------------------------- ■JSPのフォーム <form name=MyForm action="<<サーブレットのURL>>" method=post> <input type=button name=MyClick value=登録 onClick="func('Toroku');"> <input type=button name=MyClick value=修正 onClick="func('Shusei');"> <input type=button name=MyClick value=削除 onClick="func('Sakujo');"> <input type=hidden name=MySubmit> </form> <script language="JavaScript"> function func(MyCommand){ document.MyForm.MySubmit.value=MyCommand; document.MyForm.submit(); } </script> ■Servletでの処理 // リクエストの取得 String MyAction = req.getParameter("MySubmit"); // 処理の実行 if (MyAction.equals("Toroku")){...} if (MyAction.equals("Shusei")){...} if (MyAction.equals("Sakujo")){...} --------------------------------------------------- こんな感じでどうでしょうか。 ちなみにこうやって書いておくと、フォームのボタンからじゃなくても アンカーをクリックすることで同じ効果が出せそうな…… <a href="JavaScript:func('Toroku')">登録</a> あ、でもまたボロが出そうなのでこの辺で(^_^;)
その他の回答 (2)
- ryotapon
- ベストアンサー率100% (2/2)
あ、すみませんでした! (誤) if(document.MyForm.MyClick.value="検索") (正) if(document.MyForm.MyClick.value=="検索") イコールが1つ抜けていましたね……。 でもさっきは動いたような……。 ブラウザのバージョン違いかな?? これで、どうでしょうか。
補足
urizakaです。 いえ、駄目でした。 やはりhiddenになっているMySubmitにうまく数値が入らないよう なのですが… うーん。 ちなみに私の環境はJbuilder4です。
- ryotapon
- ベストアンサー率100% (2/2)
こんにちわ。 僕の知ってるやりかたでは、フォームのボタン名を パラメータとしてサーブレットに渡してあげて、 それをサーブレット側で判断して処理を実行させる方法が あります。 例えば、以下のようになります。 --------------------------------------------------- ■JSPのフォーム <form name=MyForm action="<<サーブレットのURL>>" method=post> <input type=submit name=MySubmit value=Insert> <input type=submit name=MySubmit value=Update> <input type=submit name=MySubmit value=Delete> </form> ■Servletでの処理 // リクエストの取得 String MyAction = req.getParameter("MySubmit"); // 処理の実行 if (MyAction.equals("Insert")){...} if (MyAction.equals("Select")){...} if (MyAction.equals("Delete")){...} --------------------------------------------------- といったやり方があります。 上にあげたやり方だと、ボタンの名前が英語になります。 日本語で動くかどうかは……ちょっと試してないです。 もし日本語でダメなら、ちょいと面倒だけどこんなやり方もあるかと思います。 --------------------------------------------------- ■JSPのフォーム <form name=MyForm action="<<サーブレットのURL>>" method=post> <input type=button name=MyClick value=検索 onClick="func();"> .... <input type=hidden name=MySubmit> </form> <script language="JavaScript"> function func(){ if(document.MyForm.MyClick.value="検索") {document.MyForm.MySubmit.value="Search";} ... document.MyForm.submit(); } </script> --------------------------------------------------- 後は同様。 この場合、サーブレットに送るパラメータを、実際のコマンド名じゃなくて コマンドIDとかにして管理しておくと、なおよいかもしれませんね。 以上、参考になれば幸いです。
補足
Urizakaです。 回答ありがとうございます。 しかしながら、前者はともかく、後者なのですが動きませんでした。 いろいろと試してみたところ、どうやらMySubmitのパラメーターが Servletへ行っていないようなのですが… こちらでもいろいろと試して見ますので、すみませんがまた宜しく お願いします。
お礼
urizakaです。 ありがとうございます。 今度はうまくいったようです。