博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tapestry5之onActivate和onPassivate
阅读量:5249 次
发布时间:2019-06-14

本文共 2075 字,大约阅读时间需要 6 分钟。

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

转载于:https://www.cnblogs.com/voctrals/archive/2013/03/22/2975831.html

你可能感兴趣的文章
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>
torch教程[1]用numpy实现三层全连接神经网络
查看>>
java实现哈弗曼树
查看>>
转:Web 测试的创作与调试技术
查看>>
python学习笔记3-列表
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
线程androidAndroid ConditionVariable的用法
查看>>
stap-prep 需要安装那些内核符号
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
socket初识
查看>>
磁盘测试工具
查看>>
代码变量、函数命名神奇网站
查看>>
redis cli命令
查看>>
Problem B: 占点游戏
查看>>
python常用模块之sys, os, random
查看>>