[Seasar-user:16728] Re: SAStrutsでのSESSION使用方法について
aaa aaa
[E-MAIL ADDRESS DELETED]
2009年 1月 22日 (木) 19:58:32 JST
いつもお世話になっております。
細かく回答ありがとうございます。
しかし、うまくSESSIONに格納できない状態です。
1.現在作成中のものがあり、パッケージを変えることよりもDICONに記述したほうが
いいと思いましたので、DICONに名前解決を記述しました。
2.SESSIONに格納対象のものは以下の設定としていることを確認。
> @Component(instance = InstanceType.SESSION)
> public class LoginData implements Serializable {
3.DBから取得したデータをLoginDto 相当のものに格納し、
> public Map sessionScope;
> sessionMap.put("loginData", loginData);
を行いました。が、sessionには格納されていないみたいです。
EclipseでDebugしてみましたが、SESSIONに格納できていないみたいでした。
これで格納できないということは何か設定が足りないのでしょうか?
細かく教えていただいて申し訳ございませんが、ご確認お願いします。
----------------------------------------
> Date: Thu, 22 Jan 2009 19:00:20 +0900
> From: [E-MAIL ADDRESS DELETED]
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:16725] Re: SAStrutsでのSESSION使用方法について
>
> 小林 (koichik) です.
>
> Date: Thu, 22 Jan 2009 18:29:12 +0900
> From: aaa aaa
> To:
> Subject: [Seasar-user:16724] RE: RE: Re: SAStrutsでのSESSION使用方法について
>
>> 解決済みだと思ってたのですが、動作確認していたところ
>> SESSIONスコープに格納されていなかったようです。
>>
>> Dtoという名称でないとだめとかですかね?
>
> そうですね.
> Seasar2 にコンポーネントとして管理されるには,
>
> ・dicon に登録する
> ・SMART deploy で自動登録される
>
> のいずれかが必要です.
> dicon に登録するならアノテーションは不要なので,
> ここでは SMART deploy で自動登録するとします.
>
> SMART deploy で自動登録されるには,SMART deploy の
> 規約に従う必要があります.
>
> http://s2container.seasar.org/2.4/ja/DIContainer.html#SMARTdeploy
>
> クラス名は用途ごとに決められており,ログイン情報なら
> Dto となります.FQN だと
>
> .dto.XxxDto
>
> です.よって,
>
> @Component(instance = InstanceType.SESSION)
> public class LoginDto implements Serializable {
>
> としてください.
>
> また,Service では
>
> public Map sessionScope;
>
> として HttpSession をラップした Map を
> 受け取るようにしてください.
>
> そして作成した LoginDto のインスタンスを
> loginDto という名前で Map に追加してください.
>
> sessionMap.put("loginDto", loginDto);
>
> これで LoginDto がセッションに含まれます.
>
>> 本設定で、Actionでは以下のような取り出し方法をしております。
>> -------------------------------------------------------
>> @Resource
>> private LoginData loginData;
>> -------------------------------------------------------
>
> Service が LoginDto をセッションに追加した
> リクエストよりも後のリクエストであれば,これで
> LoginDto が DI されるようになります
> (クラス名は LoginDto に,フィールド名は
> loginDto にしてください).
>
> ただし,Service を呼び出す前にこのフィールドが
> null だった Action では,Service の呼び出しから
> 戻ってきた後もこのフィールドは null のままです.
>
> Service を呼び出した Action で LoginDto を
> 取得するには,Service と同じように
>
> public Map sessionScope;
>
> を用意して,loginDto という名前で get()
> してください.
>
> loginDto = (LoginDto) sessionScope.get("loginDto");
>
>
>
> --
>
> "Koichi Kobayashi"
> "[E-MAIL ADDRESS DELETED]"
> "http://d.hatena.ne.jp/koichik"
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
_________________________________________________________________
【映画】007、メリケン・・話題の映画一挙紹介!この冬どれを観る?
http://feature.movies.jp.msn.com/special/juzu0901/
Seasar-user メーリングリストの案内