Tapestry函数执行顺序浅析

开发 后端
了解Tapestry函数执行顺序才能更好的掌握项目的运行状态;本文向您介绍Tapestry的函数执行顺序,包括finishLoad() 、activateExternalPage()函数等。

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

1、protected void finishLoad() {}

在Tapestry函数执行顺序中,这个函数***执行,它只在页面池中,没有某一个页面类、需要生成一个新的页面对象时才调用。这里就有一个陷阱:如果tomcat启动时使用了-Dorg.apache.Tapestry.disable-caching=true(为了调试方便而设),那么每次刷新页面时,它都会执行(因为每个request都会新生成一个页面类对象),造成了它总是执行的假象。在实际的部署时,会使用false,则这个函数执行的机会很少。初始化的代码放在4 pageBeginRender()中。

2、public void pageValidate(PageEvent event) {}

如果实现了PageValidateListener接口,则可以在这里进行验证,比如访问权限等。

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

如果实现了IExternalPage接口,则可以从这里取得由外面传过来的参数,赋给页面类。

4、public void pageBeginRender(PageEvent event) {}

这里可以进行一些初始化操作。但是这时从客户端传过来的参数还没有被赋值(如果有提交了表单的话)。

5、Tapestry函数执行顺序,如果有表单提交,在这里将会取出那些值,赋给对应的字段。换句话说,如果有表单提交,则将form中的各字段的值赋给页面类。(注意:只是将表单中有的值赋过来)

6、public void submit()

如果有表单提交的话,在这里将进行对应的操作,即表单提交等用到的listenter:调用的方法。因为此时各字段已经取好值了,所以可以拿来直接用。

7、protected void prepareForRender(IRequestCycle cycle) {}

可以在其中进行为了在页面上显示数据而进行的操作,比如取得什么对象,因为这里页面类的属性赋值已经结束,Tapestry函数执行顺序可以直接拿来使用了。

8、public void pageEndRender(PageEvent event) {}

***才执行这个方法。

 

【编辑推荐】

  1. Tapestry 5输入验证的实现方法
  2. JSP开发框架JSF对比基于Servlet的Tapestry
  3. Tapestry 5组件事件详解
  4. Tapestry5的性能改进浅析
  5. Tapestry5新特性详解
责任编辑:佚名 来源: IT168
相关推荐

2009-06-29 18:04:13

Tapestry5

2009-07-14 14:16:03

Tapestry 5.Tapestry教程Tapestry页面

2009-06-22 14:22:41

JSF和Tapestr

2012-05-16 13:45:24

Java构造器

2022-01-21 08:50:15

Promise任务队列前端

2009-06-24 16:16:30

JSF和Tapestr

2010-08-27 13:07:00

CSS规则

2017-06-08 14:25:46

Kotlin函数

2021-09-26 09:59:14

MYSQL开发数据库

2022-05-10 08:47:00

JMeter作用域执行顺序

2021-03-29 15:32:31

Python函数参数

2009-07-31 14:03:21

C# Format函数

2021-03-03 10:00:52

Python函数Python基础

2009-08-10 14:43:03

C#函数Convert

2009-07-31 16:00:30

C#函数重载

2009-06-29 17:42:03

Tapestry5新特

2019-11-06 09:30:35

SQL查询语句数据库

2010-04-16 09:27:18

Ocacle执行计划

2010-02-24 10:39:28

Python虚拟机

2009-05-13 10:02:37

Tapestry 5.servletApache
点赞
收藏

51CTO技术栈公众号