- - PR -
Session変数のフィールド
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-11 15:35
ServletとJSP間のセッション変数について教えてください。
現在、以下のような処理を行おうとしています。 (1)Servletのヘルパークラス(Help.java)でJavaクラス(Hakobiya.java)を生成 (2)Hakobiya.javaをHttpSessionに格納 (3)Hakobiya.javaのHashMapフィールドinfoにFormBean.javaをput (4)Help.javaからJSPへRequestDispatcherでforward() (5)JSP側でsessionからHakobiyaを取得し、HakobiyaのメソッドでFormBeanを取得 このとき、JSP側で取得したHakobiyaのフィールドinfoがnullになってしまっていて Help.java側で設定したFormBeanが取得できていません。 infoの参照先が別のインスタンスになってしまっているような気がするのですが、 同一のインスタンスを参照させるようにするにはどうすればいいのでしょうか? 参考までにセッション変数とそのフィールドはだいたい下の図のような関係です。 HttpSession --------------JSP | Hakobiya | info(HashMap) | FormBean [ メッセージ編集済み 編集者: LIMITTAKER 編集日時 2004-10-11 15:38 ] | ||||
|
投稿日時: 2004-10-11 21:50
情報が不足しているかもしれないので、補足します。
環境:Windows XP Pro Tomcat 4.1.30 J2SDK 1.4.2_05 (1)〜(4)Help.java内の処理 Hakobiya hk = new Hakobiya(); HttpSession session = request.getSession(); session.setAttribute("hakobiya", hk); FormBean formBean = new FormBean(); hk.putForm("formBean", formBean); RequestDispatcher rd = getServletContext().getRequestDispatcher("/hoge.jsp"); rd.forward(); (4)# Hakobiya.java内の処理 HashMap info = new HashMap(); public void putForm(Object key, Object value) { info.put(key, value); } public Object getForm(Object key) { return input.get(key); } (5)hoge.jsp内の処理 <jsp:useBean id="hakobiya" class="pckg.Hakobiya" scope="session" /> <% FormBean formBean = (FormBean) hakobiya.getForm(); %> ----ここまで------ print文でデバッグしたところ、(1)〜(4)のところまではformBeanの値をsessionから 取得できています。 ところが(5)で取得しようとすると、hakobiyaはとれるものの formBeanがnullになってしまっており、 hakobiyaのフィールドinfoも中身が空(nullではないです)になっています。 どこかまちがっていますでしょうか? よろしくおねがいします。 [ メッセージ編集済み 編集者: LIMITTAKER 編集日時 2004-10-11 21:51 ] [ メッセージ編集済み 編集者: LIMITTAKER 編集日時 2004-10-11 21:54 ] | ||||
|
投稿日時: 2004-10-12 10:04
上のgetFormで引数を渡さなければならないと思うのですが、 気のせいでしょうか? | ||||
|
投稿日時: 2004-10-13 09:15
引用:
-------------------------------------------------------------------------------- LIMITTAKERさんの書き込み (2004-10-11 21:50) より: (5)hoge.jsp内の処理 <jsp:useBean id="hakobiya" class="pckg.Hakobiya" scope="session" /> <% FormBean formBean = (FormBean) hakobiya.getForm(); %> -------------------------------------------------------------------------------- 上のgetFormで引数を渡さなければならないと思うのですが、 気のせいでしょうか? ------------------------------------------------------------------------------- ありがとうございます。 上のコードは処理のイメージで、手順を示す目的で記述しました。 実際のソース中には、ご指摘の引数は記述されていたのですが、 <jsp:useBean>タグのidが設定した値と違っておりました。 つまらないケアレスミスですが、 おかもとさんのご指摘がヒントになって、ようやく気づきました。 ありがとうございました。 |
1