Tapestry Visit and Global
Tapestry3.0では2種類のASO(Application state Object)が用意されていました。
Visit:
セッション毎に作成されるオブジェクト
例えばユーザがログインしてログアウトするまでの、状態を保持する時に使用します
Global
アプリケーション単位で作成されるオブジェクト
アプリケーションが起動して終了するまでの状態を保持する。初期設定値等を保持するのに使用される
Tapestry3では、ページやコンポーネントからの、これらのオブジェクトへのアクセスは、getVisit(), getGlobal()等のメソッドが用意されアクセスする事が可能でした。Tapestry4では、この2つの関数はまだ残っていますが、動作が異なりますので注意が必要です。
Tapestry4では、getVisit(), getGlobal()は使用せずに、自分でApplication State Objectの作成をします。
私の場合は、appVisit, appGlobalの名前で作成し、わざと従来のVisit,Globalと区別して使用しています。
hivemodule.xml
<!-- Visit & Global --><contribution configuration-id="tapestry.state.ApplicationObjects"><state-object name="AppVisit" scope="session"><create-instance class="jp.co.taosoftware.tagraw.tape.AppVisit" /></state-object></contribution><contribution configuration-id="tapestry.state.ApplicationObjects"><state-object name="AppGlobal" scope="application"><create-instance class="jp.co.taosoftware.tagraw.tape.AppGlobal" /></state-object></contribution>
public class AppVisit implements Serializable{private User user;public User getUser(){ return this.user;}public void setUser(User aUser){ this.user = aUser;}public boolean isLogin(){if(user == null) return false;else return true;}}
AppGlobalオブジェクト
public class AppGlobal implements Serializable{}
ページ
public abstract class AppPage extends BasePage{@InjectState("AppVisit")public abstract AppVisit getAppVisit();public abstract void setAppVisit(AppVisit aVisit);@InjectState("AppGlobal")public abstract AppVisit getAppVisit();public abstract void setAppVisit(AppVisit aVisit);}
上記の組み合わせでAppPageから、getAppVisit(), getAppGlobal()メソッドを通して、ASOへのアクセスが可能になります。
Annotesionを使用しない場合は、*.pageファイルに以下の記述を追加します。
<inject name="appVisit" type="state" object="appVisit"/>
私の場合はGlobalは何も使用していません。基本的にページやコンポーネントからしか、これらのASOへのアクセスは出来ませんので、VisitはともかくGlobalは使いにくいからです。
コメント
コメントを投稿