tapestry積累

http://assets.optomus.com/java

tapestry的請求,能夠分爲如下兩種:
render請求,也就是顯示畫面的請求
event請求,就是和頁面交互的時候,觸發組件的事件的請求(form的提交請求)post

tapestry的事件處理:this

actionlink, eventlink是get請求 (GET-REDIRECT-GET)url

form是post請求                        (POST-REDIRECT-GET)spa

若是一個事件處理完後,須要從新render頁面,多是當前頁面,也有多是遷移到另一個頁面。code

由於在遷移時須要進行當前page實例的返回過程(onPassivate),因此,若是停留在當前頁面,須要考慮調用onPassivate來保留當前頁面的狀態(說白了就是把狀態放到請求的url上),當從新獲取page實例時,調用onActivate來取得保存的狀態。orm

關於各類Link組件的context內容事件

1)pagelink的context參數,做爲目標page的onActivate()方法的參數。文檔

 <t:pagelink page="about" context="param">About</t:pagelink>get

About.java的onActivate方法

void onActivate(String param) {}

注:一但有ActivateParam傳入目標頁面,則目標頁面中的eventlink會自動添加這個參數到event產生的url中,標識爲?t:ac=param,這樣,最終的url將包含2種context內容,event的context及Activate的context。

url=http://localhost:8080/about/eventparam?t:ac=activateParam

 2)eventlink,actionlink的context參數,做爲event處理方法的參數。

<t:eventlink t:id="Hello" context="literal:hello">Hello</t:eventlink>

void onHello(String message) {}

      


其中render請求比較好理解,直接在url中輸入想要訪問的頁面就能夠了。

event的請求,稍微有些複雜,一個event請求,可能經歷Post-Redirect-Get的方式。首先是調用事件處理方法,

在根據事件處理方法的返回值,產生一個Redirect請求給客戶端,而後在發送get請求。

主要的組件事件:

   EventLink | ActionLink | Form,其中ActionLink不推薦

事件處理方法的返回值:

null : 顯示當前的頁面

Object: page.class | page instance -->顯示page對應的頁面

String : 不推薦使用,雖然能夠

StreamResponse : 主要用來生成PDF等文件

返回方式能夠參考tapestry的官方文檔,其實很簡單,StreamResponse的功能之後些相關內容進行介紹。


如何在事件處理方法中動態的選擇跳轉的頁面,而且給該頁面傳遞參數。

@Inject
private PageRenderLinkSource resource;

public Object onEvent() {
   pageName = xxx ? "MyPage" : "YourPage";
   return resource.createPageRenderLinkWithContext(pageName, param1, param2);
}

MyPage.java
-------------------------
void onActivate(Object param1, Object param2) {
     this.param1 = param1;
     this.param2 = param2;
}

Object[] onPassivate() {
    returen {this.param1, this.param2};
}
ComponentResource的createEventLink的做用
1)動態的在頁面上建立EventLink組件。有什麼具體的意義?
  在page.java中,定義幾種event的處理方法,在grid組件中,根據當前數據項目的莫個key值動態建立EventLink。
相關文章
相關標籤/搜索