More Related Content
Similar to Apache Tapestry
Similar to Apache Tapestry (20)
More from Akio Katayama (20)
Apache Tapestry
- 2. 自己紹介
名前
片山 暁雄
ID
id:c9katayama
c95029@gmail.com
所属
株式会社キャピタルアセットプランニング
http://www.cap-net.co.jp
チームT2Framework
http://code.google.com/p/t-2/
- 8. 基本的な仕組み
USER
Tapestry
Registry Service
Module
Module
URL
Page
HttpServlet
Browser Tapestry RequestHandler
Filter
Filter .tml
Filter
Filter
Component
Filter
- 9. パッケージ構成
USERクラスの登録
ルートパッケージをweb.xmlで指定
他の設定ファイルなし
<context-param>
param-name>tapestry.app-package</param-name>
<param-value>org.apache.tapestry5.tutorial</param-value>
</context-param>
- 13. Pageとtml
Pageクラス
public class GameStart{
@Property
private int guess;
@Persist
private int target;
@InjectPage
private GameOver gameOver;
void initialized(int target){
this.target = target;
}
@OnEvent(component=“ansLink”)
Object handleAnsLink(int guess) {
return target==guss ? gameOver. : null;
}
}
- 14. Pageとtml
tml
<html xmlns:t=quot;http://tapestry.apache.org/schema/tapestry_5_0_0.xsdquot;>
<head>
<title>Guess A Number</title>
</head>
<body>
<p>Make a guess between one and ten:</p>
<p>${message}</p>
<t:loop source=quot;1..10quot; value=quot;guessquot; xml:space=quot;preservequot;>
<t:actionlink t:id=“ansLinkquot; context=quot;guessquot;>${guess}</t:actionlink>
</t:loop>
</body>
</html>
- 15. Pageとtml
レンダリング時
.tml(hoge/Foo.tml)
Page(hoge/Foo.java) にPageから値を
取得
@Property
String message ${message}
@OnEvent(
component=“ansLink”) <t:actionlink
Object handleAnsLiks(){} t:id=“ansLink“>
画面アクション時に
Pageのメソッドを
コールバック
- 21. Pageとtml
tml
XHTML形式
ドキュメントルート以下、もしくは
${pkgbase}.pagesパッケージに格納
独自タグ、もしくはHTMLの要素で、コンポーネ
ントを記述
<a t:type=quot;pagelinkquot; t:page=quot;address/createquot;>
<t:pagelink page=“address/create”>
いずれも同じ
- 26. コンポーネント
使い方
tml内でコンポーネントを宣言
<t:hoge.foo.Component
id=“mycmp” bar=“XXX” />
- 30. コンポーネント
使い方
コンポーネント宣言に使用するmixinを宣言
<t:TextField
t:mixins=“autocompletequot; id=“mytxt” />
- 34. IoC・Module
Registry
Serviceの集合体
インターフェースとその実装クラス、及び設定
(contribute、decorate)の情報を保持
コアコンポーネント・ユーザーコンポーネント
すべてをこのRegistryから取り出す
@Inject,@InjectServiceのついたフィールドに
インジェクション