Tapestry的函数的执行顺序 [转]


Tapestry的函数的执行顺序 [转] <script type="text/javascript">var stattitle='Tapestry的函数的执行顺序 [转]';</script>

对之前的该文章进行了一些修正,主要是针对finishLoad()方法。

我觉得对初学者会有一些帮助。

下面这几个函数是我在使用的,它们的执行顺序依次从上到下。


1.protected void finishLoad() {}  ***

2.public void pageValidate(PageEvent event) {}

3.public void activateExternalPage(Object[] parameters, IRequestCycle cycle) {}

4.public void pageBeginRender(PageEvent event) {}

   // 如果有表单提交,则将form中的各字段的值赋给页面类
5.   ...... 赋值

6.public void submit() // 表单提交等用listenter:调用的方法

7.protected void prepareForRender(IRequestCycle cycle) {}

----------------------------------------------------

1.protected void finishLoad() {}
   这个函数最先执行,但是它实际上没有什么用处(我感觉)。因为:
这个函数只在页面池中没有某一个页面类、需要生成一个新的页面对象时才调用。这里就有一个陷阱:如果你的tomcat启动时使用了- Dorg.apache.tapestry.disable-caching=true(为了调试方便而设),那么你每次刷新页面时,它都会执行(因为每 个request都会新生成一个页面类对象),造成了它总是执行的假象。在实际的部署时,会使用caching,则这个函数执行的机会很少。所以要注意。
初始化的代码放在4 pageBeginRender()中

2.public void pageValidate(PageEvent event) {}
    如果实现了PageValidateListener接口,则可以在这里进行验证,比如访问权限等。执行完1后,它就开始执行。

3.public void activateExternalPage(Object[] parameters, IRequestCycle cycle) {}
    如果实现了IExternalPage接口,则可以从这里取得由外面传过来的参数。执行2后,执行到这里。在这里可以把那些参数取出,赋给页面类。

4.public void pageBeginRender(PageEvent event) {}
    执行完3后,将执行本函数。但是这时从客户端传过来的参数还没有被赋值(如果提交了表单的话)。这里可以进行一些初始化操作。

5.执行完4后,如果有表单提交,在这里将会取出那些值,赋给对应的字段。(注意:只是将表单中有的值赋过来)

6.public void submit()
    如果有表单提交的话,在这里将进行对应的操作。因为此时各字段已经取好值了,所以可以拿来直接用。

7.protected void prepareForRender(IRequestCycle cycle) {}
    最后才执行这个方法。我们可以在其中进行为了在页面上显示数据而进行的操作,比如取得什么对象什么的,因为这里页面类的属性赋值已经结束,可以直接拿来使用了。
    注意:如果执行了6,则还要执行4,再执行7。如果没有6,4完了就直接是7。


以上是我所总结的执行顺序,不当之处请指出。

-----------------------------------------------------

最 开始学tapestry的时候,觉得“怎么有这么多地方需要持久啊”。原来以前只知道pageBeginRender这个函数,什么初始化操作都放在它里 面。可是它是在赋值之前执行,所以拿到的字段多都是空的,却都以为是没有持久化的缘故。所以在客户端里放了一大堆的@Hidden,或者session中 持久,非常麻烦,,,对tapestry也产生的怀疑。现在才知道那些需要取得客户端传来的参数的代码,最好放在prepareForRender里,很 多不必要的持久都可以省掉了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值