[Seasar-user:9943] [Teeda]@PageScopeによる値引継ぎについて

橋本 昇 [E-MAIL ADDRESS DELETED]
2007年 8月 16日 (木) 16:31:21 JST


橋本と申します。

Teedaの@PageScopeの動作について質問させてください。

下記のようなPageクラスがあるとします。
※getter/setterは省略しています
public class TestPage {
@PageScope
private String pageProp;

@SubapplicationScope
private String subapplicationProp;

public Class initialize() {
pageProp = "pagePropValue";
subapplicationProp = "subapplicationPropValue";
return null;
}

public Class doUpdate() {
return null;
}

public Class prerender() {
System.out.println("pageProp=" + pageProp);
System.out.println("subapplicationProp=" + subapplicationProp);
return null;
}
}

対応するHTMLは大まかに下記の様になっているとします。
<form id="Form">
<input type="submit" id="doUpdate"/>
</form>

まず、はじめに表示した時点ではprerenderのログは下記の用に表示されます。
pageProp=pagePropValue
subapplicationProp=subapplicationPropValue

画面が表示された時点でsubmitボタンを押下します。
すると、ログは下記の様に出力されます。
pageProp=null
subapplicationProp=subapplicationPropValue

私が想定していたのはpageProp=pagePropValueなのですが、どうやら@PageScope
を指定したフィールドは値が復旧していないようです。

セッションの中を見ると、Teeda的にはpagePropの値は保管しているようです。
※勿論subapplicationPropの値も保持しています
私の理解ではPageScopeを指定すると少なくともポストバックを行っている間は
値が戻るものだと思っていました。
同一画面の範囲内で値を引き継ぐというイメージです。

@PageScope指定時の挙動として上記の状態は意図どおりでしょうか?
この挙動が正しいとするならば@PageScopeの指定はどのような効果をもたらすの
でしょうか?

Teedaのバージョンは1.0.10です。

どなたかご教授よろしくお願いします。




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