- PR -

sessionに配列を登録したい

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/01/21
投稿数: 1
投稿日時: 2007-01-21 05:03
sessionに配列を登録したいのですがうまくいきません。
servletで
session.setAttribute(bought[visited],cago);
とし
jspにて
String boughted = (String)session.getAttribute(bought[i]);
out.println(boughted);
としたいのですが、jspにてboughtが見つからないとエラーが出ます。

どうすればいいのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-21 13:13
bought[visited] も cago も配列ではないですよね?
#bought が多次元配列なら話は別ですが

・session に登録する属性名に配列の要素を使いたい場合
サーブレットの bought[visited] と jsp の bought[i] の値が異なっているはずです。
デバッガでアタッチするなりダンプするなりして確認しましょう。

・session に登録する属性値に配列の要素を使いたい場合
jsp で利用したい値が bought[visited] なのであれば、setAttribute の一つ目の引数に cago を、二つ目に bought[visited] をもってきます。取得するときは getAttribute(cago) ですね。
大抵サーブレット側と jsp 側で名前をあわせるので attribute 名はハードコードしますが。

・session に配列そのものを登録したい場合
配列なのは bought ですから、添え字はいらないです。
サーブレットで session.setAttribute("属性名",bought)
jsp で (String[])session.getAttribute("属性名")
といった形で設定、取得できます。

#どうでもいいですが、 boughted って英語的にちょっと変です^^;

[ メッセージ編集済み 編集者: インギ 編集日時 2007-01-21 13:14 ]
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-01-22 11:48
インギさんが解説されていますので端的に要点を。

String[] hoge = new String[5];
とした場合、hogeの型はString[]ですが、
hoge[1]の型はStringですね。

Java言語は型に対して強い制約を持っています。
型が合っていないとコンパイルの時点で怒られますね。
どこでどの変数が何型になっているかを注意して考えるとよいですよ。
1

スキルアップ/キャリアアップ(JOB@IT)