[Seasar-user:8677] DTOをセッションに乗せたいのですが

冨士原 孝之 [E-MAIL ADDRESS DELETED]
2007年 6月 26日 (火) 14:44:11 JST


はじめましてfujiharaといいます。

Seasar2を使い始めて2週間です。
Teeda+S2DAOを使用して社内向けのWebアプリを
作成しようとしてますが。

コンポーネントをセッションに置くことができません。
メーリングリストを見ると@Component(instance = InstanceType.SESSION)
だけがかいてあったのでそのとおりにしてみましたがうまくいきません。

diconファイルを使用して以下のように設定すると
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
 <component name="hogeSession" instance="session" 
class="jp.roaso.dto.HogeDto">
 </component>
</components>

[XML]Attribute "instance" with value "session" must have a value from the 
list "singleton prototype outer ".
というエラーをkijimunaが出してしまいます。

以下がDTOです。

package jp.roaso.dto;

import java.io.Serializable;

import org.seasar.framework.container.annotation.tiger.Component;
import org.seasar.framework.container.annotation.tiger.InstanceType;

@Component(instance = InstanceType.SESSION)
public class HogeDto implements Serializable {

 private static final long serialVersionUID = 1L;

 private String userId;  // ユーザID

 /**
  * @param なし
  * @return ユーザID
  */
 public String getUserId() {
  return userId;
 }

 /**
  * @param userId
  * @return なし
  */
 public void setUserId(String userId) {
  this.userId = userId;
 }

}

このDTOをPageクラスで使用する場合、どのようにするのでしょうか?

そのまま
HogeDto hoge;
hoge.setUserId("aaa");

とかやるとNullPointerExceptionです。当たり前??

diconファイル経由で
S2Container container = S2ContainerFactory.create(jp/roaso/dto/hoge.dicon);
HogeDto hoge = (HogeDto) container.getComponent(HogeDto.class);
やってもセッションには格納されていないみたいです。初心者で幼稚な質問ですが行き詰っています。お忙しいところ申し訳ありませんが宜しくお願いします。-----------------------------------
 コンピュータメネージメント株式会社
 fujihara / [E-MAIL ADDRESS DELETED]



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