[Seasar-user:19507] Re: 【Teeda】セッションスコープにDTOを格納・利用

Hidemasa Aoki [E-MAIL ADDRESS DELETED]
2010年 3月 17日 (水) 14:50:22 JST


ITプランナーズの青木と申します。

突然、失礼します。

解決されたのならよいですが、ちょっと違うかなと思うので。

セッションスコープにしておけば、とくに明示しなくても、セッションにいれてくれ
ます。
取得するときは、われわれは、
		this.operatorDto = (OperatorDto) SingletonS2ContainerFactory

.getContainer().getComponent(OperatorDto.class);
のようにしています。

> //Seasar2で管理しているオブジェクト経由でセッションを取得
> Map<String, Object> sessionScope =
> SingletonS2Container.getComponent("sessionScope");
>
> //ユーザ情報をセッションから取得
> Nid001taDto dto = (Nid001taDto) sessionScope.get("nid001taDto");

のように、遠回りな取得の仕方をしているのがいけないのだと思います。

-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of 永守正樹
Sent: Wednesday, March 17, 2010 2:28 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19505] Re: 【Teeda】セッションスコープにDTOを格納・利
用

自己解決しました。

doLogin()で
sessionScope.setAttribute("nid001taDto", nid001taDto);

を忘れてました。
初歩的ですね。

(2010/03/17 10:28), 永守正樹 wrote:
> いつもお世話になっております。
>
> 永守と申します。
>
> 現在、案件にTeedaを使用しております。
>
> セッションにユーザー情報を入れ、各画面で利用したいと考えております。
> またインターセプターによるログインチェックを入れております。
> 環境は、SmartDeployです。
>
> 【Nid001taDto】
> @Component(instance = InstanceType.SESSION)
> public class Nid001taDto implements Serializable {
>
> 	private static final long serialVersionUID = 1L;
>
> 	public String d001User;
>
> 	public String d001Password;
>
> 	public String d001MkCd;
>
> }
>
>
> 【LoginPage】(抜粋)
>
> //ユーザー情報用
> 	public Nid001taDao nid001taDao;
> 	public Nid001taDto nid001taDto;
>
> 		 * ログインボタン押下時
> 		 * @return
> 		 */
> 		public Class<?> doLogin() {
>
> 			//ユーザー情報を格納
> 			nid001taDto=nid001taDao.selectByD001User(d001User);
>
> 			//list.html
> 			return ListPage.class;
> 		}
>
>
> 【LoginAuthInterceptor】(抜粋)
>
> public Object invoke(MethodInvocation invocation) throws Throwable {
>
> //Seasar2で管理しているオブジェクト経由でセッションを取得
> Map<String, Object> sessionScope =
> SingletonS2Container.getComponent("sessionScope");
>
> //ユーザ情報をセッションから取得
> Nid001taDto dto = (Nid001taDto) sessionScope.get("nid001taDto");
>
> //ユーザー情報(Session)を保持していない場合
> //強制的にLoginPageへ遷移させる。
> if(dto == null){
> return LoginPage.class;
> }
> return invocation.proceed();
> }
>
> ・RequestDumpFilterの該当ログ
> [session]nid001taDto=[E-MAIL ADDRESS DELETED]
>
> デバックしたところ、Dtoは、Sessionに乗っているぽいのですが、中身がNullの
> ままです。
> 値がうまく渡せていないのでしょうか?
> 解決策をご教授下さい。
>
> 宜しくお願い致します。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user



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