Tapestry

プレゼンテーション層備忘

かなり馬鹿な勘違いをしていたのでメモ。 ページ仕様に書かなくともHTMLからページクラスへアクセス可能。 ページ仕様からページクラスにもアクセス可能。 ただしその場合は必然的にabstractじゃなくなるのでインスタンス管理を自分で行う事。(ページクラス…

METAタグの生成・カスタマイズ

ここ

3つのテキストフィールド(年月日)で日付を表現するコンポーネントとして使いたい

ここ

独自のJavaScriptを呼び出す

自分で作ったJavaScriptをSubmit時に呼び出したいのですが、どうするのが一番スマートですか?*1 renderComponent時に、イベントハンドラを追加しましょう。 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle){ ... yourFormCompo…

動作中のアプリケーションの状態を知るには?

アプリケーションの開発時、特にデバッグ時にとても有用なTapestry Inspectorという強力なツールがcontribで提供されています。 Tapestry Inspectorは、InspectorButtonコンポーネントを使う事でシンプルに利用する事ができます。 InspectorButtonの使い方 t…

ファイルのアップロードやダウンロードはどうやるの?

ファイルのアップロード JakartaのCommonsのFileUploadコンポーネントを内部的に使用しているUploadコンポーネントが標準で提供されています。 Uploadコンポーネントは、input type="file"のタグをレンダリングし、submit時にorg.apache.tapestry.request.IU…

かなりよくある質問

以下、http://wiki.apache.org/jakarta-tapestry/MoreFrequentlyAskedQuestions の抜粋andOr要約andOr追記 ページからページに情報を渡すには? 以下のようにします。 呼び元 public void submitAction(IRequestCycle cycle) { // The next page we want to …

Tapestry Gotchas(Tapestryの妙な点)その1

1.initialize() initialize()は、しばしばページクラスのプロパティを初期化するために使うと誤解されがちですが、本来はページがページプールに返されるとき(ページを使い終わったとき)に、プロパティの値を本来の値に戻しておく為に使います。 プロパテ…

external service

ExternalLinkコンポーネントを使うメリットは以下の二つです。 任意のページに対してパラメータを付加して実行できる。 パラメータを付加した形でURLが生成されるので、URLが特定できる。 また、ページクラス内*1で、上記URLを生成したい場合は、 cycle.getE…

Developer's Tips 2

その時点で、そのページの処理を中断し任意のページに飛ばすには PageRedirectException*1 任意のURLに飛ばすには RedirectException *1:cycle.activate() では、ページの処理は中断されず実行される。

Developer's Tips

サービスを明示的にリセットする(ResetService) 例1) ((IEngineServiceView) getPage().getEngine()).clearCachedData(); 例2) <span jwcid="@ServiceLink" service="ognl:@org.apache.tapestry.Tapestry@RESET_SERVICE">Reset Service</span> サービスをリスタートする 例1) ((IEngineServiceView) getPage().getEngine()).restart();例2)

続:listenerをどこに記述するか

酔っ払った勢いではてなを更新。 http://d.hatena.ne.jp/egap/20041201の続報ですが、他にもSubmitListenerというものを使う方法もあるようです。Tapestryの情報は乏しいので、Tapestry Wikiはかなりありがたい存在です。

3.1の展望(かなり適当です)

元ネタ:http://wiki.apache.org/jakarta-tapestry/Tapestry31 コンポーネントパラメータの再構築 今のパラメータの指定の方法では、特に"in"では色々と使い勝手が悪かったり効率が悪いっぽい。autoを指定するとまだマシだが、プリミティブ型の使用に制限が…

3.0.1での変更点(かなり適当です)

元ネタ:http://jakarta.apache.org/tapestry/changes.html contribにPopupLinkRendererが追加されました。PopupLinkRendererはリンクを新しいウインドウで開くJavaScriptを生成するものです。 ページの持つリスエストサイクルの属性は、どんなコンポーネン…

実体参照

Tapestryのコンポーネントを利用すると、HTMLには実体参照(数値文字参照:&#から始まる数値;)で出力されます。この事は、インジェクションやCSS対策に有効ですが、i-modeのように実体参照を理解しないクライアントで観るときに問題となります(化けてしま…

listenerをどこに記述するか

続報があります。こちらlistener属性を指定する事でページクラスにあるメソッドの呼び分けができるようになります。この機能は便利なのですが以下のようなクセがあり、知らないとハマリます(ハマリました。。。) formコンポーネントで記述 submitボタンが…

標準で提供されているページ

以下のものがあります。これらのうちInspector以外は利用者が独自で設定が可能です。これらのページを独自で定義しない場合には標準で提供されている簡素なエラーメッセージが表示されますが、作成したページを定義しておくとそのページが表示されるようにな…

ページの保持間隔

Tapestryのページはアプリケーション内で共有されるオブジェクトです。 ページのインスタンスは、必要がなくなるといったんプールに戻され、一定時間そこに存在します。一定時間を経過するまでの間に、再度該当ページに対する要求があると、プールにあるイン…