[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 メーリングリストの案内