注意
Tapestry中的Listener方法和C#中的delegate十分相象。一個特殊對象的實例中的方法被當(dāng)作一個對象。調(diào)用這個listener或者listener方法有點命名的混淆。它應(yīng)該被叫做delegate和delegate方法,但是已經(jīng)存在的命名方式已經(jīng)被廣泛接受,在短時間內(nèi)不容易被改變。
你只需要構(gòu)造這listrner方法,而不是整個servlet。Tapestry會在正確的時候和正確的條件下調(diào)用listener的方法。你不需要考慮如何構(gòu)造URL,以及通過URL傳遞什么數(shù)據(jù),或者如何結(jié)合到你的應(yīng)用程序中去。這些工作框架都替你做好了。
頁面和組件
Tapestry把一個應(yīng)用程序分成一系列的頁面。每一個頁面由Tapestry的組件組成。組件本身也許是由組件構(gòu)成。這里沒有人為的深度。
tapestry頁面本身就是組件,只是有些特殊用處的組件。
所有的tapestry的組件可以成為其他組件的容器。Tapestry頁面,和許多用戶定義的組件一樣,有一個模板,由一個特殊的html定義了一些靜態(tài)的和動態(tài)的組件位置,同時有標(biāo)簽表明那些內(nèi)嵌的組件是活躍的。組件不需要有標(biāo)簽。Tapestry組件參數(shù)也許是雙向的,一個組件可以讀取一個參數(shù)來獲得一個值,或者寫一個參數(shù)來設(shè)置一個值。
其他的組件。如form和form控制組件(TextField, PropertySelection, Checkbox等等)使得html中的form的實現(xiàn)變得容易。當(dāng)這樣的組件被顯示的時候,他們從程序?qū)ο笾凶x取屬性值來提供默認(rèn)值。當(dāng)form被提交的時候,form中的組件讀取http的查詢參數(shù),轉(zhuǎn)換數(shù)值為合適的類型并且更新程序?qū)ο蟮膶傩浴?/P>
引擎,服務(wù)和
隨著時間的過去,Tapestry已經(jīng)發(fā)展了它自己的方言。
Tapestry的引擎是一個一對象為中心的,它的作用和Httpsession在Servlet API的作用。 引擎的最終職責(zé)是存儲應(yīng)用程序的持久狀態(tài)(從一個請求到下一個請求時存在的屬性),這個任務(wù)已經(jīng)通過把引擎存貯在httpsession的方式被完成了。本文檔將主要討論默認(rèn)的實現(xiàn),同時標(biāo)注如何在適當(dāng)?shù)臅r候擴展,重寫這些實現(xiàn)。
posted on 2005-12-19 09:39
我的java天地 閱讀(701)
評論(0) 編輯 收藏