ここから本文です

1つのForm内で複数のSubmitボタンを配置して遷移先を指定したい。

d621811さん

2009/5/323:34:22

1つのForm内で複数のSubmitボタンを配置して遷移先を指定したい。

サーブレットAのテキストボックスに値を入力してSubmitボタンAを押下するとサーブレットBの画面へ遷移。
サーブレットAのテキストボックスに値を入力してSubmitボタンBを押下するとサーブレットBの画面へ遷移。
サーブレットAのテキストボックスに値を入力してSubmitボタンCを押下するとサーブレットCの画面へ遷移。

のような動きを実現したいのですが、同じFormないで複数の遷移先を指定するには、
action = でどのように指定すればいいのでしょうか?

実現方法よろしくおねがいします。

閲覧数:
77,310
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

2009/5/406:25:14

私はその手のことをやるときはjavascriptでやりますね。
submitボタンのonclickでjavascriptの関数を呼び出し、その中でformのaction属性の値を書き換える。

----- javascript -----
function goServletB(){
document.getElementById('form').action = 'servletBのパス';
}
function goServletC(){
document.getElementById('form').action = 'servletCのパス';
}
-------------------
・・・

<form id='form' name='form' action="servletAのパス">
<input type="submit" value="A" >
<input type="submit" value="B" onclick="goServletB();" >
<input type="submit" value="C" onclick="goServletC();>
</form>

てきとーに書いたけど、こんな感じかな?

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

編集あり2009/5/401:23:56

type="submit " の BUTTON要素 (または INPUT 要素) に name 属性を設定すれば、押されたサブミットボタンの name が送信されるんだ。送られてきた name を元にして、POST 先の Servlet/JSPプログラムの方で、RequestDispatcher で forward とか include すればいいよねぇ。★

──────────────────────────────
<form action="GeneralElection" method="post">
<p>次期 衆院選、あなたは...</p>
<ul>
<li><button type="submit" name="voteForLDP">自民党に投票"</button></li>
<li><button type="submit" name="voteForDP">民主党に投票</button></li>
<li><button type="submit" name="voteForAnother">その他の党に投票</button></li>
</ul>
</form>
──────────────────────────────
import java.io.IOException ;
import java.util.Map ;
import javax.servlet.ServletException ;
import javax.servlet.http.HttpServlet ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponce ;

public class GeneralElection extends HttpServlet
.... {
.... public void doPost (HttpServletRequest req, HttpServletResponce res) throws IOException, ServletException
.... .... {
.... .... Map<String, String> form = req .getParameterMap () ;
.... .... String dispatcher =
.... .... .... form .containsKey ("voteForLDP") ? "/servlet/A" :
.... .... .... form .containsKey ("voteForDP") ? "/servlet/B" :
.... .... .... form .containsKey ("voteForAnother") ? "/servlet/C" :
.... .... .... null ;
.... .... if (dispatcher==null) { ~エラー処理~ ; return ;}
.... .... getServletContext () .getRequestDispatcher (dispatcher) .forward (req, res) ; /* ★ */
.... .... }
.... ~ 略 ~
.... }
────────────────────────


■参考
「1つのフォームで複数のsubmitボタン」
http://chaichan.web.infoseek.co.jp/qa1500/qa1549.htm

「submitボタンが2つ以上存在するには?」 - とほほ
http://www.tohoho-web.com/lng/199903/99030004.htm

「Javaの道 > Servlet・JSP > Servlet > 7. include、forward」
http://www.javaroad.jp/servletjsp/sj_servlet7.htm

「JavaDrive > サーブレット/JSP入門 > サーブレット間の連携」
http://www.javadrive.jp/servlet/dispatch/index.html

[キーワード]
submit, ふたつ, 二つ, 2つ, 複数, 遷移先, 場合分け, 条件分け, RequestDispatcher, フォワード, forward, インクルード, include, 連携, Servlet, サーブレット, JSP, SSI, HTTP リダイレクト

joseph_joey_tribbiani

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。