2008-02-29(金)
■[Teeda]Teedaチュートリアル4-3

前回はTeedaの画面遷移の仕方について学びました。
本チャプターではTeedaのPage間の値の引継ぎの基本について学びます。
TeedaはアーキテクチャとしてPRGパターン(XXX参照)を採用しており、
あるPageから別のPageへの値の引継ぎを自動で行います。
引継ぎをする際のルールとしては下記のようなものがあります。
- 引継ぎ元Pageクラスと引継ぎ先Pageクラスで同一のプロパティ名がある場合、Teedaは値を自動で引き継ぐ
- 引き継ぐプロパティは同一のサブアプリケーション内だけに限定する(サブアプリケーションについて後述します)
- スコープのアノテーションがついている場合、指定されたスコープ範囲内での引き継ぎとなる
前のチャプターで作った足し算の例でみてみましょう。
package examples.teeda.web.add; public class AddInputPage { public Integer arg1; public Integer arg2; public Class doCalculate() { return AddResultPage.class; } public Class initialize() { return null; } public Class prerender() { return null; } }
package examples.teeda.web.add; public class AddResultPage { public Integer arg1; public Integer arg2; public Integer result; public Class initialize() { result = new Integer(arg1.intValue() + arg2.intValue()); return null; } public Class prerender() { return null; } }
上記のAddInputPageからAddResultPageでは、同一のプロパティarg1とarg2があるので
AddInputPageからAddResultPageのpackage文に注目してみてください。
Teedaは同一のパッケージの場合、同一サブアプリケーションだとみなして、値を自動で引き継ぐようになっています。
サブアプリケーションとは、ユースケースごとに設定されるグループの事です。
1ユースケース、1サブアプリケーションがTeedaの基本だととってもらえれば良いです。
では、あるサブアプリケーションから別のサブアプリケーションに遷移してしまう場合はどうでしょうか?
この場合、Teedaは値を引き継ぎません。正確にはアノテーションを指定することで引き継ぐことは可能ですが、
原則何も指定しない場合(これをTeedaではデフォルトスコープと呼んでいます)は引き継がない仕様になっています。
今日はここまで。続く。。。。
トラックバック - http://d.hatena.ne.jp/shot6/20080229/1204279120
リンク元
- 14 http://reader.livedoor.com/reader/
- 14 http://www.google.com/reader/view/
- 9 http://www.seasar.org/wiki/index.php?Teeda/gettingStarted
- 5 http://a.hatena.ne.jp/s2committer/?gid=297329
- 5 http://d.hatena.ne.jp/masataka_k/
- 5 http://d.hatena.ne.jp/y-komori/
- 5 http://www.google.co.jp/reader/view/
- 4 http://mishi-n.com/blogdevelopment/2007/03/teeda_1.html
- 3 http://a.hatena.ne.jp/s2committer/
- 3 http://a.hatena.ne.jp/setoazusa/mobile

モバイルなデスクトップリッチクライアントソリューションですw
<input type=”button” id=”doCalculate” value=”計算実行” />
とすれはarg1,arg2は引き継がれるが、
<a id=”doCalculate” href=”addResult.html”>計算結果画面へ遷移する</a>
では引き継がれない
<a>ではできないのでしょうか?
私の働いているところでは、規模が小さいシステムをまとめて、
webアプリケーションとしては一つなのですが、ぜんぜん違うシステムが乗ってたりしてます。
で、その各システムのPageクラスを例えば、
examples.teeda.web.system1.add
examples.teeda.web.system1.sub
examples.teeda.web.system2.add
examples.teeda.web.system2.sub
などとしたり、system1が結構大きくなってきたので、
examples.teeda.web.system1.anypackge1.add
examples.teeda.web.system1.anypackge2.sub
などとしたり出来るのかなーと思いまして。