[Seasar-user:10175] Re: [S2Struts]InterceptorにセッションのオブジェクトがDIされない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 8月 29日 (水) 17:20:24 JST


小林 (koichik) です.

Date:    Wed, 29 Aug 2007 16:45:33 +0900
From:    "Takafumi Yoshida" <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10172] Re: [S2Struts]InterceptorにセッションのオブジェクトがDIされない

> ログイン処理をおこなったActionでExportToSessionアノテーションを使用しています。

なるほど...
LoginInfo は Dto ではないので,S2 で管理される
コンポーネントではありません.
Action は外部バインディングが有効になっているため
コンポーネントではない LoginInfo が DI されますが,
Interceptor は外部バインディングが有効ではないため
LoginInfo は DI されません.

対処としては,LoginInfo を LoginInfoDto に
変更し (パッケージも <root>.dto に),

@Component(instance=InstanceType.SESSION)
public class LoginInfoDto {
  ...
}

としてインスタンス属性を session にしてください.
これで LoginInfoDto は session スコープの
コンポーネントとして扱われるようになります.

その上で,

> 	@ExportToSession
> 	public LoginInfo getLoginInfo() {
> 		return loginInfo;
> 	}

の @ExportToSession は取り除いてください.
# プロパティの型と名前も LoginInfoDto に.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内