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

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 6月 26日 (火) 15:15:27 JST


大谷です.

PageクラスにHogeDtoをDIできるように
setterを準備してください.

また、SmartDeploy構成であれば、diconに
設定する必要はありません.
(package jp.roaso.dtoを見る限りだと適切な場所に配置している
ので、SmartDeployが使えるように思います.)


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

DOCTYPE宣言が古いんだと思います.
下記の最新のものを使ってみてください.
あわせてKijimunaも最新にしておくことをお奨めします.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">



07/06/26 に 冨士原 孝之<[E-MAIL ADDRESS DELETED]> さんは書きました:
> はじめまして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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



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