《Enjoying Web Development with Tapestry》是本入門好書,寫得很清楚。
Tomcat5.5設定在$TOMCAT/conf/Catalina/localhost/<webapp>.xml
HelloWorld.xml 中寫這個:<Context docBase="c:/workspace/HelloWorld/context" path="/HelloWorld"/>
通路Tapestry頁面 http://localhost:8080/HelloWorld/app?service=page&page=Home
http://localhost:8080/HelloWorld/ 和所有jsp一樣。
app在web application中定義。
service=page 顯示一個檔案
page=Home 顯示Home.html
頁面的内部調用次序
<html>Hello <span jwcid="subject">World</span>!</html>
1. 正常html代碼 <html>Hello
2. 輸出 <html>Hello
3. 找到Tapestry控件<span jwcid="subject">World</span>
4. Tapestry按照定義建立控件,這個控件是java的Component "subject"
5. Tapestry建立了html代碼,John
6. 輸出 John
7. 正常html代碼 !</html>
8, 輸出 !</html>
如何建立一個控件,在頁面定義:
<page-specification>
<component id="subject" type="Insert">
<binding name="value" value="ognl:greetingSubject"/>
</component>
</page-specification>
id 是标志,type是Tapestry的控件類型,insert表示輸出text形式。value是Insert的一個參數。"ognl:greetingSubject"是要找的表達式。
Tapestry如何建立一個java對象
1. 建立一個org.apache.tapestry.html.BasePage對象。這是頁面所有的基類。
2. 根據XXX.page把屬性等都建立出來
3. 這裡要建立一個subject控件,先執行getGreetingSubject()函數獲得GreetingSubject的值,它的value就是subject的輸出。
package com.ttdev.helloworld;
import org.apache.tapestry.html.BasePage;
public class Home extends BasePage {
public String getGreetingSubject() {
return "John";
}
}
這裡是java檔案。
Tapestry預設是cache HTML 和 .page檔案,
set JAVA_OPTS="-Dorg.apache.tapestry.disable-caching=true"可以關閉Tapestry的cache
其它的寫法
<binding name="value" value="ognl:'Paul'"/>直接傳回string
<binding name="value" value="literal:Judy"/>在一個string隊列中傳回
<binding name="value" value="greetingSubject"/>預設的ognl字首