- ベストアンサー
servletからjspへオブジェクトの配列情報を送る方法
いつもお世話になっております。echo2002です。 さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか? ”servletで作成したオブジェクトの配列をjspにforwardして表示させる” こんなような処理を考えています。 構成:FileListServletクラス, FileInfomationクラス, disp.jsp FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、 それぞれgetなどのアクセサメソッドを持つとします。 FileListServletクラスでの処理 FileInfomationクラスの配列を作成し、各情報をsetする。 HttpServletRequestにsetAttributeでFileInfomation情報を付加し、 disp.jspへforwardする。 ※以下の方法を考えています。 request.setAttribute("fileinfo1", fileinfo[0]); request.setAttribute("fileinfo2", fileinfo[1]); request.setAttribute("fileinfo3", fileinfo[2]); ・・・ (配列でsetAttributeできるのかわからなかったので、 とにかくファイルの数分setAttributeしてみました) getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res) わからないこと: disp.jspでどのようにFileInfomationの情報を取得し、 内容を参照できるのかがよくわからないのです。 jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、 返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね? 突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。 オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、 それもご教授いただけますでしょうか。 よろしくお願いいたします。jsp難しいです・・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。 今回の場合は、getAttributeメソッドですね。 戻り値はObjectですがこれはキャストすれば良いのです。 FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1"); てな具合です。 なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。 さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。 サーブレット側で、 request.setAttribute("キー文字列", fileinfo); として、JSP側で、 FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列"); とすれば、良いのです。
その他の回答 (2)
- ishito
- ベストアンサー率0% (0/1)
まず、fileinfoの配列ですが、配列ではなく VecterやListなどの可変長配列にセットしていって みてはいかがでしょう? ※例えばVecter Vecter vecData = new Vecter(); :(Vecterオブジェクトにセット) request.setAttribute("fileinfo1", vecData ); サーブレット側ではこうなります。 Jsp側ではVecterのオブジェクトを用意してあげて キャストしてあげてください。 vecter = (Vecter)request.getAttribute("fileinfo1"); こんな感じ。どうでしょうか?
お礼
ishitoさん回答ありがとうございます。 Vecterというオブジェクトは知らなかったので、 これから調べてみようと思います。 ありがとうございました。
- torakiyojp
- ベストアンサー率58% (25/43)
http://www.atmarkit.co.jp/fjava/rensai2/jspservlet13/jspsevlet13_1.html http://www.atmarkit.co.jp/fjava/rensai2/jspservlet13/jspsevlet13_2.html でどうでしょうか?
お礼
torakiyojpさん、回答ありがとうございます。 このページ、ここに質問させていただく前にも一応目を通していたのですが、オブジェクトが”配列”だった場合はどうなるのかがよくわからなかったんです。 教えていただいて、ありがとうございました。
お礼
run34rickyさん回答ありがとうございます。 私が望んでいた形にほとんどぴったりなやり方のようです。まだ試してみていないのですが、これからやってみようと思います。できるとうかがっただけでかなりやる気が出てきました(^^; ありがとうございました。