Tapestry5之onActivate和onPassivate

摘要:
T5有三种类型的事件,即EventLink、ActionLink和Form。前两种通过HTTP GET从服务器获取信息,后一种通过HTTP POST获取信息。EventLink和ActionLink通过GET/REDIRECT/GET从服务器获取所需信息也很重要。FORM模式为POST/REDIRECT/GET。至于这两种方法的优点,你可以根据

T5有三种类型的事件,分别是EventLink,ActionLink,Form。并且前两种是通过HTTP GET从服务器获得信息的,最后一种是通过HTTP POST获得信息的。

还有一点儿很重要的就是EventLink和ActionLink从服务器端获得想要的信息的方式是:GET/REDIRECT/GET。FORM的方式是:POST/REDIRECT/GET。

至于两种方式的优势,大家可以在网上找到,按照我自己的理解就是,获得到的URL可以保存,并且可以任意刷新,还可以随意的返回(Return)到前一个页面。

以上都是写常识。今天无聊做了个实验发现了几个小东西,一一列出来。

1 假如我们有一个URL地址,假如是:http://localhost:8686/t5study/about/13,这个时候,我们在地址栏处点击回车和对这个地址进行刷新是会有不同的结果的。

回车的log

[INFO] pages.About -----------onActivate(int param)-----------
[INFO] pages.About -----------@SetupRender-----------
[INFO] pages.About -----------onPassivate()-----------
[INFO] AppModule.TimingFilter Request time: 3 ms

刷新的log

[INFO] pages.About -----------onActivate(int param)-----------
[INFO] pages.About -----------@SetupRender-----------
[INFO] pages.About -----------onPassivate()-----------
[INFO] AppModule.TimingFilter Request time: 6 ms
[INFO] AppModule.TimingFilter Request time: 0 ms
[INFO] AppModule.TimingFilter Request time: 0 ms

虽然,所干的事儿是一样的,但是刷新的话,会造成三次访问。以上这些有无意义,我也不知道。

但是下面的事儿是个正事儿:

我们在点击一个EventLink的时候,在link上面hover的时候,下面的那一排字母,类似于:

http://localhost:8080/input/eventlinks:add/1?t:ac=11

这个才是我们get请求的URL,它会向服务器发送一个HTTP GET请求,并且我们的onActivate方法接受到的参数就是ac=后面的内容。而传递过来的参数是这个1。下面是一个请求的log:

[INFO] pages.About -----------onActivate(int param)-----------
[INFO] pages.About -----------onAdd(int a)-----------
[INFO] pages.About -----------onPassivate()-----------
[INFO] AppModule.TimingFilter Request time: 2 ms
[INFO] pages.About
-----------onActivate(int param)----------- [INFO] pages.About -----------@SetupRender----------- [INFO] pages.About -----------onPassivate()-----------  * [INFO] AppModule.TimingFilter Request time: 3 m

我给他分成了两块儿,不知道对也不对。第一个就是上面的URL产生的HTTP GET所获得的log信息,它会把我们想要的结果封装,并且给我们返回一个302,我估计redirect的地址就是

http://localhost:8080/input/eventlinks:add/12

这个URL被我们的浏览器重新发送给server端,这个时候,Tapestry才会通过response来渲染我们本地的页面。

还有一点很奇怪的东西,就是我们的页面有几个EventLink,ActionLink,Form就会在“*”处出现几次onPassivate方法。

忽然之间明白了:

由于每次都是PRG,所以URL上的参数总是会有所变化。而我们的onPassivate方法就是给这些EventLink,ActionLink,Form附上新的值。

例如: ...?t:ac=11

免责声明:文章转载自《Tapestry5之onActivate和onPassivate》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇asp定义数组详解 转载关于Microsoft Virtual PC 2007安装使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ThinkPhp框架对“数据库”的基本操作

框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一、链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写con...

实战|手把手教你如何使用抓包神器MitmProxy

大家好,我是阿辰,今天教大家如何使用MitmProxy抓包工具。 玩爬虫的小伙伴都知道,抓包工具除了MitmProxy外,还有Fiddler、Charles以及浏览器netwrok等 既然都有这么多抓包工具了,为什么还要会用MitmProxy呢??今天教大家使用MitmProxy抓包工具的原因,主要有以下几点: 不需要安装软件,直接在线(浏览器)进行抓...

将多个jar包重新打包成一个jar包

我介绍的方法是使用java命令来操作的,所以首先的安装jdk,这个就自己搞定吧. 提取jar包 为了将多个jar包打包成一个jar包,首先要将每个jar包的内容提取出来放到一个文件夹下,具体的操作命令就是使用jar xf jar的文件名 比如我的jar放到桌面的一个新建文件夹(2)下,那么就通过cmd进入到这个目录然后输入上面的命令即可 重新打包jar包...

websocket长连接压力测试踩过的坑

Websocket协议压测记录 背景: 公司的行情系统是采用的websocket协议,有请求和订阅两种方式向服务器申请最新行情信息。请求方式是一次的,订阅方式是建立连接后,服务器定时向客户端推送行情信息。 初步测试方案: 因考虑到websocket是双工通讯,是长连接,并且本次压测的性能指标是系统能建立的最大连接数,并且是建立连接后服务器能持续向客户端推送...

logback 配置详解

一:根节点<configuration>包含的属性:   scan:   当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。   scanPeriod:   设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。   debug:...

Python练习题--持续更新

1、你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号。 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母、小写字母、数字组成,结果如下图:   2、测试机器的磁盘太小,经常报警,要写一个清理日志的脚本,每次运行就把三天之前的日志删除,日志名的格式是x...