-Tapestry-S2連携再考(6)

いろいろ考えまとめてみました。IPageを実装した(多くの場合、BasePageクラスの継承した)ページオブジェクトをS2Containerにおくと、気をつけないといけないことがあります。

  • ページオブジェクトはリクエスト毎にインスタンスが必要で、利用が終わるとプールされている。一個ではないので、エレメントでinstance属性をprototypeとしないといけない
  • ページオブジェクトを生成するIPageLoaderのデフォルト実装PageLoaderはそのオブジェクト生成がClass#newInstance()をprivateなメソッドの中で行っているので、容易にはオーバーロードできない。
  • IPageLoaderにはIPageSourceがファクトリとなっていて、同じくIPageSourceを実装していないといけません。こっちは偶然か必然か不明ですが単純にいける。