-Tapestry-S2連携再考(6)
いろいろ考えまとめてみました。IPageを実装した(多くの場合、BasePageクラスの継承した)ページオブジェクトをS2Containerにおくと、気をつけないといけないことがあります。
- ページオブジェクトはリクエスト毎にインスタンスが必要で、利用が終わるとプールされている。一個ではないので、
エレメントでinstance属性をprototypeとしないといけない - ページオブジェクトを生成するIPageLoaderのデフォルト実装PageLoaderはそのオブジェクト生成がClass#newInstance()をprivateなメソッドの中で行っているので、容易にはオーバーロードできない。
- IPageLoaderにはIPageSourceがファクトリとなっていて、同じくIPageSourceを実装していないといけません。こっちは偶然か必然か不明ですが単純にいける。