external service

ExternalLinkコンポーネントを使うメリットは以下の二つです。

  1. 任意のページに対してパラメータを付加して実行できる。
  2. パラメータを付加した形でURLが生成されるので、URLが特定できる。

また、ページクラス内*1で、上記URLを生成したい場合は、

cycle.getEngine()
  .getService( Tapestry.EXTERNAL_SERVICE )
  .getLink( cycle, cycle.getPage(), new Object[]{
            "MyPageName",
            param1,
            param2} )
            .getURL()

のようにします。*2

これに対し、任意のリスナを呼び分けたい(イベントドリブン)場合はDirectLinkコンポーネントを使うことになります。

ちなみに、Tapestryには任意のページの任意のリスナを呼ぶ、という考え方はありません。

*1:IExternalPageをimplementsしておく必要があります

*2:出典はこちらです。