Hatena::ブログ(Diary)

おおたに6号機blog このページをアンテナに追加 RSSフィード

2008-02-29(金)

[]Teedaチュートリアル4-3 18:58 Teedaチュートリアル4-3を含むブックマーク


前回はTeedaの画面遷移の仕方について学びました。

本チャプターではTeedaのPage間の値の引継ぎの基本について学びます。

TeedaアーキテクチャとしてPRGパターン(XXX参照)を採用しており、

あるPageから別のPageへの値の引継ぎを自動で行います。

引継ぎをする際のルールとしては下記のようなものがあります。

  1. 引継ぎ元Pageクラスと引継ぎ先Pageクラスで同一のプロパティがある場合、Teedaは値を自動で引き継ぐ
  2. 引き継ぐプロパティは同一のサブアプリケーション内だけに限定する(サブアプリケーションについて後述します)
  3. スコープアノテーションがついている場合、指定されたスコープ範囲内での引き継ぎとなる

前のチャプターで作った足し算の例でみてみましょう。

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があるので

これらはTeedaによって自動で引き継がれます。

AddInputPageからAddResultPageのpackage文に注目してみてください。

Teedaは同一のパッケージの場合、同一サブアプリケーションだとみなして、値を自動で引き継ぐようになっています。

サブアプリケーションとは、ユースケースごとに設定されるグループの事です。

ユースケース、1サブアプリケーションTeedaの基本だととってもらえれば良いです。



では、あるサブアプリケーションから別のサブアプリケーションに遷移してしまう場合はどうでしょうか?

この場合、Teedaは値を引き継ぎません。正確にはアノテーションを指定することで引き継ぐことは可能ですが、

原則何も指定しない場合(これをTeedaではデフォルトスコープと呼んでいます)は引き継がない仕様になっています。




今日はここまで。続く。。。。

masataka_kmasataka_k 2008/02/29 10:54 私はRIAはiPhoneとAndroidだとおもう。Androidはハードから作れるしw。なんてね。

shot6shot6 2008/02/29 10:58 iPhoneにAIRが搭載されるのが一番流行りそうな気がします。
モバイルなデスクトップリッチクライアントソリューションですw

papi2papi2 2008/09/17 09:15 add.htmlを
<input type=”button” id=”doCalculate” value=”計算実行” />
とすれはarg1,arg2は引き継がれるが、
<a id=”doCalculate” href=”addResult.html”>計算結果画面へ遷移する</a>
では引き継がれない
<a>ではできないのでしょうか?

shot6shot6 2008/09/17 09:49 ボタンでないとおそらく引き継がれないですね。

通りすがり通りすがり 2010/12/13 22:02 サブアプリケーションの階層というのは任意に深く出来たりするんですか?
私の働いているところでは、規模が小さいシステムをまとめて、
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

などとしたり出来るのかなーと思いまして。