最權(quán)威的書(shū)是tapestry In Action,但初學(xué)者上手困難,另一本很好的是Enjoying Web Development with Tapestry,非常的棒,由淺入深,可惜目前無(wú)法找全這本書(shū),http://www.itpub.net/390564.html有前4章。下定決心寫(xiě)我自己的學(xué)習(xí)筆記。
每一個(gè)tapestry應(yīng)用都要有一個(gè)Home page,當(dāng)tapestry接收第一個(gè)request時(shí),就會(huì)查找Home.page,這是他的總?cè)肟凇R驗(yàn)閠apestry的URL對(duì)于人可讀性極差(3.1將改變這種情況),如:http://localhost:8080/HelloWorld/app?service=page/Home,如果訪問(wèn)具體頁(yè)面在page后面指定即可,如有個(gè)AddItem頁(yè)面一定要真實(shí)存在AddItem.html,只需/app?service=page/AddItem。就這么個(gè)淺顯的問(wèn)題在InAction中居然沒(méi)有介紹,害的我找了兩天呀,最后還是在Enjoying中清楚的寫(xiě)著呀,真是本好書(shū)呀!
tomcat5.0.28中把類(lèi)包放到shared/lib下是不行的,找不類(lèi),在Engoying書(shū)中就是這樣用的,版本是tomcat-5.5.7!應(yīng)用程序的路徑不在tomcat目錄下這樣使用,有待一試!
在頁(yè)面對(duì)應(yīng)的類(lèi)文件中,定義抽象方法,就要在.page配置文件中定義,告訴tapestry負(fù)責(zé)管理這個(gè)屬性,例如:
public abstract void setDvd(DVD dvd);
public abstract DVD getDvd();
<property-specificationname="dvd" type="com.sandcast.examples.tapestry.crud.bo.DVD"/>
事件驅(qū)動(dòng),在類(lèi)中定義listener必須滿足這個(gè)格式:
public void methodName(IRequestCycle cycle) {}
Global類(lèi)是在框架內(nèi)可以調(diào)用保存在context范圍內(nèi)的,如果用得到要求自己實(shí)現(xiàn)這個(gè)類(lèi),名字可以任意命名,但要在servletName.application配置文件中定義:
<property name="org.apache.tapestry.global-class" value="com.sandcast.examples.tapestry.Global"/>