[Seasar-user:9962] [Teeda]HTMLにない値の引き継ぎについて

Hiroshi Yamamoto [E-MAIL ADDRESS DELETED]
2007年 8月 19日 (日) 15:30:50 JST


山元と申します。

TeedaでHTMLのフォームにないプロパティの、Pageクラスの値の引き継ぎ動作について教えてください。

・入力画面 -> 確認画面 -> 結果画面

上記の流れの処理があり、当初、入力画面のdoメソッドで処理をして結果の値を設定するようにしていました。

結果の値は文字列に出来ないオブジェクトだったので、確認画面のhtmlにはフィールドを持っていませんでした。

この処理は問題なかったのですが、ひがさんが[Seasar-user:9843]で
「結果画面用の処理は、結果画面で行ったほうが良い」と書かれていたのを見て、
入力画面からgoで遷移して確認画面のinitializeメソッドで、
処理をして値を設定するように変えたところ、値が引き継がれなくなってしまいました。

最終的に、プロパティのスコープを明示的にサブアプリケーションにすることで
hogeが出力されるようにはなったのですがスコープを明示しない場合に、
どうしてこのような動作になるかが理解できませんでした。

この動作はTeedaの動作として想定したものなのでしょうか?

前提 ----------------------------------

結果の値のプロパティ名:hoge

hogeConfirm.html
hogeのinputフィールドなし

HogeConfirmPage.java
public Class doFinish() { System.out.println(hoge); }

修正前 --------------------------------
hogeEdit.html
<input type="button" id="doHogeConfirm" value="confirm" />

HogeEditPage.java
public Class doHogeConfirm() { setHoge("hoge"); }

HogeConfirmPage#doFinish()で"hoge"が出力される

修正後 --------------------------------
hogeEdit.html
<input type="button" id="goHogeConfirm" value="confirm" />

HogeConfirmPage.java
public Class initialize() { setHoge("hoge"); }

HogeConfirmPage#doFinish()で"null"が出力される

対応 ----------------------------------
@SubapplicationScope
private String hoge;

HogeConfirmPage#doFinish()で"hoge"が出力される



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