Tapestry最新版5.1.0.5教程(二)續(xù)
Posted on 2009-06-03 17:17 云自無(wú)心水自閑 閱讀(2245) 評(píng)論(2) 編輯 收藏 所屬分類: Java 、心得體會(huì) 、Tapestry1、在Tapestry中,頁(yè)面稱之為頁(yè)面模板(Page Template)。Tapestry的頁(yè)面模板必須是一個(gè)Well Formed Xml,需要引入Tapestry的Xml命名空間才能使用Tapestry的組件。示例:<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
2、在頁(yè)面模板中可以使用表達(dá)式來(lái)獲取變量的值。這種表達(dá)式在Tapestry中稱之為:Expansion。
3、在前一篇文章中已經(jīng)說(shuō)過(guò),一個(gè)頁(yè)面模板必須有一個(gè)對(duì)應(yīng)的Java類。在Tapestry中最基本的Expansion就是一個(gè)Java類的屬性。比如:${userName}這就是一個(gè)在可以在頁(yè)面模板中使用的Expansion,為了正確的顯示用戶名,必須在Java類中有一個(gè)對(duì)應(yīng)的public String getUserName()這樣一個(gè)方法。注意:是一個(gè)getter方法,而不必需是public String userName,實(shí)際上,如果沒(méi)有userName這個(gè)屬性,而只有g(shù)etUserName這個(gè)方法,應(yīng)用將能正確運(yùn)行。
4、Expansion是不區(qū)分大小寫的,也就是說(shuō)${userName}和${UserName}是等價(jià)的。
5、使用Expansion,我們不僅可以顯示Java類的屬性,而且可以顯示該屬性的屬性,比如Java類有一個(gè)日期型屬性public Date getBirthday();那么,在頁(yè)面模板中就可以這樣使用:${birthday.time},相當(dāng)于調(diào)用getBirthday().getTime()
6、也可以顯示地調(diào)用非getter方法:比如:${birthday.hashCode()},Tapestry5.1開(kāi)始,可以將屬性作為函數(shù)調(diào)用的參數(shù)了。
7、可以使用?.來(lái)調(diào)用方法:比如:${birthday?.time},這樣即使birthday是null,頁(yè)面也不會(huì)報(bào)錯(cuò)。
8、Tapestry的Expansion是會(huì)編譯時(shí)生成class文件的,而不是在運(yùn)行時(shí)使用反射來(lái)取值的。Tapestry的作者認(rèn)為這是Tapestry性能優(yōu)于Struts2的可能(注意:Howard Lewis Ship也只是猜測(cè))原因之一。
9、Tapestry的Expansion使用的幾個(gè)說(shuō)明:
a、Expansion旁邊的空白是會(huì)被忽略的
b、整數(shù)和小數(shù)前面可以使用負(fù)號(hào)
c、常數(shù)都是使用十進(jìn)制的。
d、字符串需要使用單引號(hào)
e、可以使用..來(lái)表示一個(gè)范圍,比如:1..5,表示1到5
2、在頁(yè)面模板中可以使用表達(dá)式來(lái)獲取變量的值。這種表達(dá)式在Tapestry中稱之為:Expansion。
3、在前一篇文章中已經(jīng)說(shuō)過(guò),一個(gè)頁(yè)面模板必須有一個(gè)對(duì)應(yīng)的Java類。在Tapestry中最基本的Expansion就是一個(gè)Java類的屬性。比如:${userName}這就是一個(gè)在可以在頁(yè)面模板中使用的Expansion,為了正確的顯示用戶名,必須在Java類中有一個(gè)對(duì)應(yīng)的public String getUserName()這樣一個(gè)方法。注意:是一個(gè)getter方法,而不必需是public String userName,實(shí)際上,如果沒(méi)有userName這個(gè)屬性,而只有g(shù)etUserName這個(gè)方法,應(yīng)用將能正確運(yùn)行。
4、Expansion是不區(qū)分大小寫的,也就是說(shuō)${userName}和${UserName}是等價(jià)的。
5、使用Expansion,我們不僅可以顯示Java類的屬性,而且可以顯示該屬性的屬性,比如Java類有一個(gè)日期型屬性public Date getBirthday();那么,在頁(yè)面模板中就可以這樣使用:${birthday.time},相當(dāng)于調(diào)用getBirthday().getTime()
6、也可以顯示地調(diào)用非getter方法:比如:${birthday.hashCode()},Tapestry5.1開(kāi)始,可以將屬性作為函數(shù)調(diào)用的參數(shù)了。
7、可以使用?.來(lái)調(diào)用方法:比如:${birthday?.time},這樣即使birthday是null,頁(yè)面也不會(huì)報(bào)錯(cuò)。
8、Tapestry的Expansion是會(huì)編譯時(shí)生成class文件的,而不是在運(yùn)行時(shí)使用反射來(lái)取值的。Tapestry的作者認(rèn)為這是Tapestry性能優(yōu)于Struts2的可能(注意:Howard Lewis Ship也只是猜測(cè))原因之一。
9、Tapestry的Expansion使用的幾個(gè)說(shuō)明:
a、Expansion旁邊的空白是會(huì)被忽略的
b、整數(shù)和小數(shù)前面可以使用負(fù)號(hào)
c、常數(shù)都是使用十進(jìn)制的。
d、字符串需要使用單引號(hào)
e、可以使用..來(lái)表示一個(gè)范圍,比如:1..5,表示1到5