偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Tapestry 5.1教程:Tapestry的頁(yè)面

開發(fā) 后端
本文是Tapestry教程的入門篇,講述Tapestry 5.1中的起始頁(yè)面配置,頁(yè)面的跳轉(zhuǎn),以及頁(yè)面的表達(dá)式。

1、Tapestry 5.1的Start.tml和Start.java

Tapestry不需要在Web.xml中配置welcome頁(yè)面,也是使用約定大于配置的方式,默認(rèn)的起始頁(yè)面就是在pages目錄下的Start。Tapestry中的頁(yè)面由兩部分組成:一個(gè)Java類和一個(gè)相同名字的模板文件(類似于jsp,Tapestry中的后綴名為:tml)。其中Java類是必須的,就算是沒有任何代碼,也必須要生成一個(gè)空類。tml模板在大多數(shù)情況下也是需要的,少數(shù)情況比如返回二進(jìn)制流的話,可以不需要。

tml模板文件可以放在webroot目錄下,也可以和Java類一直放在src目錄下。

2、Tapestry 5.1中頁(yè)面的跳轉(zhuǎn)(可以用于指定跳轉(zhuǎn)頁(yè)面的東西:) @InjectPage

在Tapestry中,頁(yè)面的跳轉(zhuǎn)和Struts之類的框架是不同的,Struts的做法是Action返回一個(gè)字符串,Struts在xml配置文件中進(jìn)行搜索匹配,決定跳轉(zhuǎn)的頁(yè)面。而Tapestry沒有類似的配置文件,它的做法是在當(dāng)前頁(yè)中引用跳轉(zhuǎn)頁(yè)面。比如:想從Start跳轉(zhuǎn)到Register頁(yè)面的話,需要在Start中注入Register頁(yè)面。示例代碼如下:

  1. Class Start{  
  2.         @InjectPage 
  3.         private Register register;  
  4.  
  5.         Object onSubmit() {  
  6.                 return register;  
  7.         }  
  8. }  
  9.  

其中值得注意的是:onSubmit的修飾符并不是常見的public,而是缺省級(jí)別(或者說(shuō)是package級(jí)別),這是Tapestry推薦的做法。***,比public級(jí)別低,這樣的話,頁(yè)面類的事件處理函數(shù)沒有被公開,不是其他所有的人都能隨便調(diào)用。第二,比private級(jí)別高,這樣如果測(cè)試需要的話,可以把測(cè)試類放在同一個(gè)package里,方便測(cè)試的進(jìn)行。

在Tapestry的事件處理函數(shù)中可以有6種方式指定跳轉(zhuǎn)的頁(yè)面

a、什么也不返回,也就是返回類型是void,這樣的話,頁(yè)面不跳轉(zhuǎn),只是刷新當(dāng)前頁(yè)面

b、字符串。Tapestry會(huì)查找與該字符串對(duì)應(yīng)的類

c、類。一般來(lái)說(shuō)是一個(gè)Page類,這種方式比返回類名(字符串)要好,因?yàn)檫@樣的話,在類重命名后,程序不會(huì)出錯(cuò)。

d、Page實(shí)例,

e、Link,

f、流(Stream),比如返回pdf或者Excel文件。

3、Tapstry 5.1頁(yè)面中的表達(dá)式

類似于jsp中< %= 變量名%>這樣的寫法,Tapestry的語(yǔ)法是${變量名},其中變量名是需要在頁(yè)面對(duì)應(yīng)的Java類中有g(shù)et方法的。

4. Tapestry 5.1中頁(yè)面相關(guān)的其他注意事項(xiàng)

◆在Tapestry中,頁(yè)面稱之為頁(yè)面模板(Page Template)。Tapestry的頁(yè)面模板必須是一個(gè)Well Formed Xml,需要引入Tapestry的Xml命名空間才能使用Tapestry的組件。示例:

  1. < html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"> 

◆在頁(yè)面模板中可以使用表達(dá)式來(lái)獲取變量的值。這種表達(dá)式在Tapestry中稱之為:Expansion。

◆在前一篇文章中已經(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í)際上,如果沒有userName這個(gè)屬性,而只有g(shù)etUserName這個(gè)方法,應(yīng)用將能正確運(yùn)行。

◆Expansion是不區(qū)分大小寫的,也就是說(shuō)${userName}和${UserName}是等價(jià)的。

◆使用Expansion,我們不僅可以顯示Java類的屬性,而且可以顯示該屬性的屬性,比如Java類有一個(gè)日期型屬性public Date getBirthday();那么,在頁(yè)面模板中就可以這樣使用:${birthday.time},相當(dāng)于調(diào)用getBirthday().getTime()

◆也可以顯示地調(diào)用非getter方法:比如:${birthday.hashCode()},Tapestry5.1開始,可以將屬性作為函數(shù)調(diào)用的參數(shù)了。

◆可以使用?.來(lái)調(diào)用方法:比如:${birthday?.time},這樣即使birthday是null,頁(yè)面也不會(huì)報(bào)錯(cuò)。

◆Tapestry的Expansion是會(huì)編譯時(shí)生成class文件的,而不是在運(yùn)行時(shí)使用反射來(lái)取值的。Tapestry的作者認(rèn)為這是Tapestry性能優(yōu)于Struts2的可能(注意:Howard Lewis Ship也只是猜測(cè))原因之一。

◆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

【編輯推薦】

  1. Tapestry 5.1教程:web.xml的配置
  2. 學(xué)習(xí)Tapestry的十個(gè)關(guān)鍵點(diǎn)
  3. Tapestry函數(shù)執(zhí)行順序淺析
  4. Tapestry 5輸入驗(yàn)證的實(shí)現(xiàn)方法
  5. JSP開發(fā)框架JSF對(duì)比基于Servlet的Tapestry
責(zé)任編輯:yangsai 來(lái)源: BlogJava
相關(guān)推薦

2009-07-14 14:08:35

Tapestry 5.web.xml的配置

2009-05-13 10:02:37

Tapestry 5.servletApache

2009-06-22 14:22:41

JSF和Tapestr

2009-07-03 16:33:13

Tapestry函數(shù)執(zhí)

2009-06-24 16:16:30

JSF和Tapestr

2009-06-29 18:04:13

Tapestry5

2009-07-03 14:41:29

2009-06-29 17:42:03

Tapestry5新特

2009-07-03 17:09:01

學(xué)習(xí)Tapestry

2009-07-03 14:28:03

Tapestry 5組

2009-06-23 14:01:27

StrutsTapestryJSF

2009-07-03 14:46:42

JSP開發(fā)框架JSFTapestry

2011-12-27 09:25:29

ApacheJava

2009-06-23 16:29:51

JSFSpring MVCStruts 2

2011-08-23 16:48:41

Lua 5.1API 函數(shù)

2010-05-21 09:31:09

安裝VNC

2011-09-08 13:11:14

框架

2012-03-26 21:49:44

iOS

2010-05-12 15:16:46

MySQL 5.1

2015-02-05 09:29:25

Android 5.1
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)