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。
相关文章
相关标签/搜索