組件類,頁面類,component mixin 類,都是用同樣的方法創建的.沒有什麼很特殊的地方.
組件類基礎:
在T5中 創建頁面和組件類是非常簡單的,輕鬆的.
有幾點要求:
1,類必須是公共的.
2,類必須在正確的包中,要必須和前面配置文件中一致.
3,類中必須有一個公共的,無參數的構造函數.
下面就一個最基本的組件例子:
java 代碼
package org.example.myapp.components;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.annotations.BeginRender;
public class HelloWorld
{
@BeginRender
void renderMessage(MarkupWriter writer)
{
writer.write("Bonjour from HelloWorld component.");
}
}
這個組件僅僅是在頁面上輸出一個指定的信息.其中@BeginRender 註釋是組件生命週期註釋中一個類型.組件包:
組件類必須存放在指定的包中.這些包必須存放在應用程序根目錄包(假如爲root)下.
頁面類 ,必須放在root.pages;
組件類 ,必須放在root.components
mixins,必須放在root.mixins.
子目錄/子包
類不可能都直接放在這些包下(如pages,components,mixins等).類有可能存放在子包(子目錄)中.那麼子包名稱成爲頁面或者組件類型名稱的一部分.因此我們可能定義一個頁面組件爲com.example.myapp.pages.admin.CreateUser,他的邏輯頁面名稱(顯示在URLS中名稱)可能是admin/CreateUser.
Tapestry提供了一些簡單的頁面名稱(或者組件類型,或者mixins類型)的優化工作.檢查包名稱是否則類的名稱的前綴或者後綴,如果是則可以把這些前綴或者後綴去掉.例如有這樣一個類:com.example.myapp.pages.user.EditUser,這個類可以有一個名稱爲user/Edit的頁面.這個目的是爲了讓URL更短,更加自然.
頁面與組件的區別:
頁面和組件的區別是非常非常小的.僅僅是他們所在包名稱不一樣(頁面:root.pages.PageName,組件:root.components.ComponentType);