[Seasar-user:10687] Re: [Teeda]「値の保持」と「値の受け渡し」の両立のコツを教えてください

en kimi [E-MAIL ADDRESS DELETED]
2007年 9月 22日 (土) 00:09:12 JST


こんにちは。遠藤と申します。

07/09/20 に 橋本 昇<[E-MAIL ADDRESS DELETED]> さんは書きました:
> Teedaを利用している皆様にアドバイスをいただきたく思い、質問させていただ
> きました。
> 現在私は社内システム開発を通してTeedaの使い方の習得に励んでいるのです
> が、答えが見えないテーマがあります。
> Teedaを使った開発の際のページの「値の保持」と「値の受け渡し」の両立です。
> ありがちなシチュエーションですが下記の答えが見えないのです。
> 検索画面(1画面)⇒1件選ぶ⇒編集画面(1〜n画面続く)⇒更新orキャンセル⇒
> 検索画面に戻る
> という流れのサブアプリケーションがあるとします。
> 編集画面から元の検索画面に戻ったときに当時の検索条件を保持するにはどうす
> るのが合理的か?

実は私も最近Teedaを使い始めて同じことに悩んでいて、MLでご意見を伺おうかなと
思っていたところでした:-)。

試行錯誤の結果、現在は
・画面間で共有するプロパティをDTOに定義し、Pageクラスではプロパティの保持を
そのDTOに委譲する。
・そのDTOをSubapplictionScopeアノテーションを使って保持(またはHTML内の
<input type="hidden" id="[DTO名]SessionSave"/>を使って保持)
としています。

# SubapplicationScopeアノテーションを使って保持するのとhiddenタグの〜
# SessionSaveを使って保持するのとはどう違うのでしょうか。
# こういう場合どちらを使うべきか迷っています。

ただしこの方法でも以下の難点があるのでいまいちすっきりしていません。
・Pageクラス内でDTOのプロパティのgetter,setterを用意しなければならない
(せっかくpublic field対応になったのに…)
・DTOの生成タイミング、いつSubapplicationScopeにつっこむかのタイミングが
難しい

こういう場合のベストプラクティスはどんな感じになるのでしょうか。


違う話になってしまいますが、他にTeedaを使っていて悩んでいるのはforeachです。
foreach用のDTOのプロパティをPageクラスで再度定義しなければいけないというのが
つらい。
1ページ内で複数のDTOのforeachがあると全部のDTOのプロパティをPageクラスに定義
しておかなければならないですし、プロパティ名がぶつからないように注意しなければなら
ない。今は規約としてDTOのプロパティ名はempDtoNameのように先頭にDTO名を
つけることにしています。しかし、そうすると非常にプロパティ名が長くなってしまう、
entityとDTOでプロパティ名が異なるのでDxoで全プロパティの変換ルールを書かなけれ
ばならないという不便さがあります。


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