重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

JSPでデータを管理するようなものを作りたいと思っています。

まず検索画面で年・月・日・時間が検索できるようにselect文で設定しています。

結果画面では検索画面で年だけ選択の場合は年ごとに月まで選択したときにはその年の月ごとに表示させます。

そして困っているのはココからなんですがたとえば
検索結果が
2004年 0人 5人
2005年 4人 2人
となっているときに2004年をクリックできるようにしてクリックしたときには2004年を月単位で表示させたいのです。

つまり
1月  5人 1人
2月  4人 3人
3月  0人 0人
というようにです。

このクリックしたときにクリック元(この場合は2004年)の情報をどうやって渡すか、また取得するか悩んでいます。

もちろん、最初の検索画面からの検索結果が出るソースと2004年をクリックしもっと詳細を表示させる画面のソースは同じものを使いたいと思っています。

とても困っていますのでご存知の方宜しくお願いします。

A 回答 (1件)

ご質問の内容から察するとJavascriptのカテゴリではなく、Javaのカテゴリですね。


JSPはJavascriptではありません。

ご質問についてですが、
画面のソースに同じものを使うことも可能ですが、別々にしたほうが分かりやすくなると思います。

year.jsp
2004年 0人 5人
2005年 4人 2人
を表示するJSP

month.jsp
2004年
1月  5人 1人
2月  4人 3人
3月  0人 0人
を表示するJSPで表示するには「year=2004」というターゲットの西暦値が必要。

こういうふうに分けておくと、あとから
「やっぱり2004年をクリックしたら表の下にパラッと月のデータがプルダウンしたほうがいい」
とか
「別ウインドウでポップアップさせたい」などの要求に応じて変更するときに対応しやすかったりします。
ですので、私の場合は、見る目的が異なる画面は別ソースにするようにしています。

値の受け渡しについてですが、JSPではHttpServletRequestのインスタンスに「request」でアクセスできます。
つまり、
まずyear.jspを表示させて、その画面中で
<a href="month.jsp?year=2004">2004年</a>
のようなリンクを作っておくと
month.jspのスクリプトで
String clicked_year = request.getParameter("year");
このように書くことで、「2004」という値が渡されます。
もちろん、year.jspの中で
<a href="year.jsp?year=2004">2004年</a>
というように自分自身にパラメータを渡すこともできます。
但し、上記の方法では、
(1)英数字以外の文字はいちいちURLエンコードしなければならない
(2)GETを許可していないサーバーでは使えない
(3)渡せるパラメータの文字数に制限がある
などの問題がありますが、西暦の値だけ渡したいのであれば、これで十分かと思います。

その他の値の受け渡し方法としては
<form name="parameter" method="POST" action="month.jsp">
<input type="hidden" name="year">
</form>
のようにフォームを作って、「2004年」をクリックしたらJavascriptで、hiddenオブジェクト「year」に「2004」という値をセットして、
document.parameter.submit()
とする方法や、
HttpSessionを使ってオブジェクトごと受け渡すこともできますが、まだいろいろと学習中のようですから、あまりお薦めではありません。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2004/08/23 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!