tapestry积累

http://assets.optomus.com/

tapestry的请求,可以分为以下两种:
render请求,也就是显示画面的请求
event请求,就是和页面交互的时候,触发组件的事件的请求(form的提交请求)

tapestry的事件处理:

actionlink, eventlink是get请求 (GET-REDIRECT-GET)

form是post请求                        (POST-REDIRECT-GET)

如果一个事件处理完后,需要重新render页面,可能是当前页面,也有可能是迁移到另外一个页面。

因为在迁移时需要进行当前page实例的返回过程(onPassivate),所以,如果停留在当前页面,需要考虑调用onPassivate来保留当前页面的状态(说白了就是把状态放到请求的url上),当重新获取page实例时,调用onActivate来取得保存的状态。

关于各种Link组件的context内容

1)pagelink的context参数,作为目标page的onActivate()方法的参数。

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

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。


转载于:https://my.oschina.net/u/1453451/blog/228865

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值