Posted on 2009-05-31 20:31
云自無心水自閑 閱讀(3004)
評論(0) 編輯 收藏 所屬分類:
Java 、
心得體會 、
Tapestry
1、Start.tml和Start.java
Tapestry不需要在Web.xml中配置welcome頁面,也是使用約定大于配置的方式,默認的起始頁面就是在pages目錄下的Start。Tapestry中的頁面由兩部分組成:一個Java類和一個相同名字的模板文件(類似于jsp,Tapestry中的后綴名為:tml)。其中Java類是必須的,就算是沒有任何代碼,也必須要生成一個空類。tml模板在大多數情況下也是需要的,少數情況比如返回二進制流的話,可以不需要。
tml模板文件可以放在webroot目錄下,也可以和Java類一直放在src目錄下。
2、頁面的跳轉(可以用于指定跳轉頁面的東西:) @InjectPage
在Tapestry中,頁面的跳轉和Struts之類的框架是不同的,Struts的做法是Action返回一個字符串,Struts在xml配置文件中進行搜索匹配,決定跳轉的頁面。而Tapestry沒有類似的配置文件,它的做法是在當前頁中引用跳轉頁面。比如:想從Start跳轉到Register頁面的話,需要在Start中注入Register頁面。示例代碼如下:
Class Start{
@InjectPage
private Register register;
Object onSubmit() {
return register;
}
}
其中值得注意的是:onSubmit的修飾符并不是常見的public,而是缺省級別(或者說是package級別),這是Tapestry推薦的做法。第一,比public級別低,這樣的話,頁面類的事件處理函數沒有被公開,不是其他所有的人都能隨便調用。第二,比private級別高,這樣如果測試需要的話,可以把測試類放在同一個package里,方便測試的進行。
在Tapestry的事件處理函數中可以有6種方式指定跳轉的頁面
a、什么也不返回,也就是返回類型是void,這樣的話,頁面不跳轉,只是刷新當前頁面
b、字符串。Tapestry會查找與該字符串對應的類
c、類。一般來說是一個Page類,這種方式比返回類名(字符串)要好,因為這樣的話,在類重命名后,程序不會出錯。
d、Page實例,
e、Link,
f、流(Stream),比如返回pdf或者Excel文件。
3、Tapstry頁面中的表達式
類似于jsp中<%= 變量名%>這樣的寫法,Tapestry的語法是${變量名},其中變量名是需要在頁面對應的Java類中有get方法的。