打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转载] Tapestry页面提交执行顺序
[转载] Tapestry页面提交执行顺序 第一,页面是页面,页面跳转的时候,需要清空properties数据,否则,这些数据保存在session里面,很容易造成bug。打个比方说吧,initialize()这个方法,的确,在页面表现的时候,执行两次。页面表现之前,初始化你的页面,然后页面表现你的业务逻辑,比如你要显示什么新闻呀等等。。。最后,页面在结束表现之前,再次执行这个方法,将你的properties还原为初始值,这样,在你的下次再访问该页面的时候,不会因为 properties的值已经改变而造成意想不到的错误。第二,提交一般是指表单,也就是formSubmit。如果你希望这个表单在提交之前就有初始值,也很容易,将ognl对应的get方法对应的成员变量初始化一个值就可以。比如说用initialize()来初始化。在你submit之后,ognl会自动调用properties相应的set方法赋值,你在form对应的监听方法进行数据处理就可以了。第三,其它的Tapestry自带方法就不说了。什么validate()等等,都不提,只讲这5个方法: initialize() detach() attach() pageBeginRender() pageAfterRender() 它们的执行是有先后顺序的,其中只有initialize()方法会执行两次,其它的都执行一次。这些特点,足够你利用来做很多事。 页面在表现(render)的时候,我只以direct service举例: 1)执行initialize(),初始化该页面的properties,这些properties都应该是客户端的瞬时状态。 2)执行attach(IEngine value),获取你的engine。所以,你可以利用这个方法往你的web容器里面加载服务。 3)执行pageBeginRender(),同样是用来在页面表现之前,给你希望的变量赋值。。比如说,我基本上是用这个方法来获取Visit对象中储存的session值。 4)页面表现业务逻辑。你的什么Foreach啊,等等,现在才开始执行。 5)执行pageEndRender()。在你的页面业务逻辑表现完之后,如果你希望有什么后续工作,可以在这里执行。 6)执行detach()的super(),也就是执行AbstractPage里面Tapestry自己的detach(),目的是为了清空该页面所调用的engine,visit,requestCycle。因为如果不清空的话,比如什么用户信息的话,就可能会泄露。这个方法的存在是 Tapestry基于安全性的考虑。 7)执行initialize(),再次将你的properties恢复为初始值。 8)执行detach()里面,你自己写的内容。。 以上仅仅最简单的情况下,这5种方法的执行顺序。。。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
向包含的页面中传值
Tapestry的函数的执行顺序
jQuery -- 函数 prop 和 attr 的区别
【转载】TAPESTRY
[hibernate]关于Hibernate的强制加载和延迟加载
Tapestry开发者指南(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服