- ベストアンサー
JSPからJSPへ情報を渡せる?
JAVA言語 JSPからの質問がございます。 JSPからJSPへと飛ばすときに、例えば a.jspがありそのjspには変数Aと変数Bと変数Cがあります。 リンクをおした時点で条件をつけてA==4 なら、b.jspへ飛びその際変数Bをb.jspにわたす。 もしノットイコールならc.jspへ飛び、その際変数Cをc.jspにわたす。 なんていうことができるのでしょうか? もしできるようでしたら、お手数ですが例を打っていただけませんでしょうか?宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね? でしたら遷移先については、 <% if (A == 4) { %> <a href="b.jsp">リンク</a> <% } else { %> <a href="c.jsp">リンク</a> <% } %> のようにAの値によってリンク先を変更して表示すれば良いと思われます。 あとは、値の渡し方ですが、方法は複数あるように思います。 一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。 前者はセッションスコープに値を設定するのが一般的と思われます。 request.getSession().setAttribute("B", "Bの値"); で格納し、遷移先のJSPで request.getSession().getAttribute("B"); で取り出せます。 後者は、aタグのhrefに「b.jsp?B=3」とかにして、 request.getParameter("B"); で取り出せると思います。 「java セッション」とかで検索するとセッションに入れたオブジェクトの有効範囲(スコープ)などを解説してくれているサイトが見つかるはずです。 参考になれば幸いです。
その他の回答 (3)
JSPは、クライアントに送信された時点でHTMLとなっているので変数は保持できません。 リンクをクリックした時に値を判定したいなら、JavaScriptでやる方法しかありません。 また、サーバーが持ってる変数をわざわざクライアントで送信する意味はほとんどありません。 それならば、セッションで実装するのがいいのではないでしょうか。
お礼
アドバイス本当にありがとうございます。 セッションの方法もありましたね。 ネットで調べたところ、やはり一般的なのはセッションでする方法 だということがわかりました。 アドバイスのおかげで、また少しずつ幅が広がりました。 今後もこの場で質問させていただいた際には宜しくお願いいたします。
- _ranco_
- ベストアンサー率58% (126/214)
> サーブレットからJSPの流れ あなたのご質問に応じて、JSPからJSPへの流れとして答えを書いたつもりです。 <% if (A == 4){ request.setAttribute("A", "4"); //利用側でString -> int 変換 request. getRequestDispatcher("飛び先.jsp").forward(request, response); } %>
お礼
大変失礼いたしました。いろいろな作業していたので、 混ざってしまったのです。 あの、もしAという変数に4が入っていて、 <a href="?">A</a>のうように記述し クリックした時に A=4だったら~.jspに飛ぶようにするには やはりクリックした時にですから、リンクタグは必要に なるかとは思うのですが? アドバイスしてくださった <% if (A == 4){ request.setAttribute("A", "4"); //利用側でString -> int 変換 request. getRequestDispatcher("飛び先.jsp").forward(request, response); } %> でそのようなことはできますでしょうか? 何度も伺い申し訳ございません。
- _ranco_
- ベストアンサー率58% (126/214)
いちばんよくやる方法は、request.setAttribute()してforwardです。
お礼
専門家の方からのご回答ありがとうございます。とても助かりました。 サーブレットからJSPの流れはだいたいつかめました。 あと問題は、上記のa.jsp側の リンクをおした時点で条件をつけて変数A==4 という、記述のしかたがいまいち頭の中でどのように書いて よいのかわかりません。 なんでもよいので、お手数ですが、記述の仕方を教えていただけませんでしょうか?<a href>等をつかえばよいのでしょうか?
お礼
とても素晴らしい意見ありがとうございます。 あなた様のご回答でなんとか次の段階へ進めそうです。 本当にありがとうございました。 ちょっとしたことですが、気づかないことや経験不足も生じて 疑問ばかり生じてしまいます。 調べてもうまく理解できない時は、 やはりこのような場でアドバイスを求めることが一番の近道と、 今回改めて感じました。 こんな私ですが、今後もここで質問させていただいた際には、 アドバイス宜しくお願い致します。