資源描述:
《apestry頁面跳轉(zhuǎn)傳值》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、作者:李金峰TAPESTRY頁面跳轉(zhuǎn)傳值@Persist傳值1接下來我以一個實際例子演示頁面間的傳值。這個例子中頁面上有一個10位數(shù)字的鏈接,點擊每位數(shù)字后,可以把這個數(shù)字值傳到下一頁顯示。效果如圖Main.tml??@Persist傳值2?Main.java?4@Persist傳值3?處為頁面模版的鏈接,這里通過循環(huán)1到10個數(shù)字,形成十個鏈接,箭頭所指即為頁面顯示。${index}即為顯示的數(shù)字,每循環(huán)一次一個數(shù)字值。它對應這頁面類中g(shù)etIndex()函數(shù)。t:context="prop:index"就是頁面類處的參數(shù)index值。點擊鏈接上的數(shù)字1
2、0觸發(fā)頁面類處函數(shù)onActionFromSelect()----select與連接idselect對應。此時,框架會把t:context的值10設為這個函數(shù)的參數(shù)index。44@Persist傳值4?處@Persist實現(xiàn)建立用戶session。當頁面跳轉(zhuǎn)時,會把這個值設入session中。在函數(shù)onActionFromSelect()中的參數(shù)index的值10賦給了_selected,被保存到session中。?處判斷如果selected是剛剛被選中的值,就在此處顯示,箭頭所指即為顯示。${selected}即對應模版類中的getSelected()
3、函數(shù),因為這個值已經(jīng)保存到session中,所以跳轉(zhuǎn)后依然能取到。onActionFromSelect的返回值為空,所以仍會跳轉(zhuǎn)到本頁。這個函數(shù)還可以返回Object,Object指定要跳轉(zhuǎn)的頁面,點擊后會跳轉(zhuǎn)到Object頁面。@Persist傳值5@InjectPage跳轉(zhuǎn)傳值1本例講的是把一個頁面注入到主頁中,點擊主頁上的鏈接,跳入到注入頁,并把參數(shù)傳過去。本例中頁面類及模版分別命名為Start.java和Start.tml;跳轉(zhuǎn)目標頁為Url.java和Url.tml.Start.java中用@InjectPage注解把Url.java注入。Url
4、.java中的兩個函數(shù)voidonActivate(Stringmessage)和StringonPassivate()會在適當?shù)臅r候執(zhí)行,用來接收把取出傳過來的值@InjectPage跳轉(zhuǎn)傳值2Start.javaStart.tml1432頁面顯示55@InjectPage跳轉(zhuǎn)傳值31處指定跳轉(zhuǎn)目標頁Url。2處字符串row在跳轉(zhuǎn)過程中由Start頁被帶入到Url頁面3處頁面模版中鏈接id為U,和頁面類中的onActionFromU對應。當點擊鏈接U,則會觸發(fā)頁面類中哦你ActionFromU(Stringsomething)函數(shù),頁面中的字符串循環(huán)從l
5、ist中取出賦值給參數(shù)something.模版中鏈接的context屬性的值會就為這一參數(shù)值,會被帶入到Url中。4處把字符串放人list中,通過循環(huán)取出賦給something傳人Url頁面。5處list中儲存的數(shù)據(jù)顯示在頁面上。@InjectPage跳轉(zhuǎn)傳值4Start.javaStart.tml1432頁面顯示@InjectPage跳轉(zhuǎn)傳值43和4處是目標跳轉(zhuǎn)頁(就是主頁上標注@InjectPage的頁)中必須有的函數(shù),跳轉(zhuǎn)過程中會在適當?shù)臅r候調(diào)用這個函數(shù)把傳過來的值通過這兩個函數(shù)傳給頁面類中的message屬性。1處為傳過來的message值在頁面上
6、的顯示。2處為顯示效果。SSO傳值1本例中包括頁面登陸類Login.java,頁面登陸模版Login.tml.登陸成功類Success.java,登陸成功模版Success.tml.登錄成功后會跳轉(zhuǎn)到登陸成功頁面。SSO(SessionStateObject)被保存在Session中,可以被同一用戶的所有頁面共享,但不會被其他用戶共享。SSO在第一次訪問的時候會被自動創(chuàng)建,給SSO賦值即可保存這個值。在Login頁面,當輸入的用戶名是“l(fā)jf”而且密碼是“l(fā)jf”,Tapestry會自動創(chuàng)建一個字符串類型的SSO,并把用戶名保存在其中。然后就可以在Succ
7、ess頁面顯示這個用戶名。SSO傳值2Login.javaSuccess.tmlLogin.tmlSuccess.java12345SSO傳值31處2處為登陸類和登陸模版相對應的用戶名和密碼。3處登陸類中的one和登陸成功類中的theUser上都標注了@SessionState注釋。這就是sessionstate對象。這里定義SSO時,使用了兩個不同的變量名稱one和theUser,但它們是同一個SSO.因為SSO只跟類型有關(guān),而不管我們?nèi)绾蚊?。如果我們要把兩個同一類型的數(shù)據(jù)保存到SSO中,可以建一個包含這兩個數(shù)據(jù)的類型。5處在登陸類Login.java
8、中把username賦給了SSO變量中。在Success類中通過變