中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tapestry的頁面怎么配置

發布時間:2022-01-04 10:51:50 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

本篇內容主要講解“Tapestry的頁面怎么配置”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Tapestry的頁面怎么配置”吧!

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

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

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

2、Tapestry 5.1中頁面的跳轉(可以用于指定跳轉頁面的東西:) @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 5.1頁面中的表達式

類似于jsp中< %= 變量名%>這樣的寫法,Tapestry的語法是${變量名},其中變量名是需要在頁面對應的Java類中有get方法的。

4. Tapestry 5.1中頁面相關的其他注意事項

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

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

◆在頁面模板中可以使用表達式來獲取變量的值。這種表達式在Tapestry中稱之為:Expansion。

◆在前一篇文章中已經說過,一個頁面模板必須有一個對應的Java類。在Tapestry中最基本的Expansion就是一個Java類的屬性。比如:${userName}這就是一個在可以在頁面模板中使用的Expansion,為了正確的顯示用戶名,必須在Java類中有一個對應的public String getUserName()這樣一個方法。注意:是一個getter方法,而不必需是public String userName,實際上,如果沒有userName這個屬性,而只有getUserName這個方法,應用將能正確運行。

◆Expansion是不區分大小寫的,也就是說${userName}和${UserName}是等價的。

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

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

◆可以使用?.來調用方法:比如:${birthday?.time},這樣即使birthday是null,頁面也不會報錯。

◆Tapestry的Expansion是會編譯時生成class文件的,而不是在運行時使用反射來取值的。Tapestry的作者認為這是Tapestry性能優于Struts2的可能(注意:Howard Lewis Ship也只是猜測)原因之一。

◆Tapestry的Expansion使用的幾個說明:

a、Expansion旁邊的空白是會被忽略的

b、整數和小數前面可以使用負號

c、常數都是使用十進制的。

d、字符串需要使用單引號

e、可以使用..來表示一個范圍,比如:1..5,表示1到5

到此,相信大家對“Tapestry的頁面怎么配置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿荣旗| 石河子市| 天等县| 乾安县| 彰化市| 水富县| 定州市| 西充县| 金山区| 自治县| 望奎县| 古浪县| 通辽市| 崇明县| 鄱阳县| 阳山县| 雷山县| 六枝特区| 清水河县| 衡山县| 鄂州市| 高安市| 望谟县| 中阳县| 荥经县| 深水埗区| 游戏| 星座| 两当县| 瑞丽市| 峡江县| 东至县| 乐安县| 镇雄县| 木兰县| 周至县| 班玛县| 柏乡县| 阳谷县| 清水县| 大名县|