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里,很 多不必要的持久都可以省掉了。 |
相关推荐
【Tapestry4开发指南】 Tapestry4是一款基于Java的Web应用框架,它的前身是Tapestry3.1。该框架的创始人Howard不仅开发了Tapestry,还同时创建了轻量级的Hivemind框架。Tapestry3.1在设计初期即在Hivemind框架下...
接下来,我们转向"tapestry组件.docx",组件是Tapestry的核心组成部分,它们是可重用的、自包含的代码单元,可以处理用户交互、展示数据或执行业务逻辑。组件可以是简单的HTML元素,也可以是复杂的UI部件。组件的...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
5. **Tapestry-ioc-junit**: 这是Tapestry与JUnit测试框架的集成,用于编写和执行单元测试。通过这些类,我们可以了解如何编写针对Tapestry服务和组件的测试用例。 6. **Tapestry-ioc-test**: 提供了Tapestry IoC的...
3. **请求处理**:当用户发送HTTP请求时,Tapestry会解析URL,确定要调用的页面和方法,然后执行相应的业务逻辑并生成响应。 **三、Tapestry 3 的关键特性** 1. **状态管理**:Tapestry 3自动管理组件的状态,支持...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
9. **Tapestry Func**:`tapestry-func-5.3.8.jar`可能包含了Tapestry提供的函数库,提供了一些实用的函数,方便开发者在Tapestry应用中使用。 10. **Tapestry JPA (Java Persistence API)**:`tapestry-jpa-5.3.8....
Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...
`tapestry-func-5.3.7.jar`提供了函数式编程的支持,使得Tapestry的应用代码更加简洁和优雅,尤其是在处理列表、映射等集合类型的数据时。 `tapestry-jpa-5.3.7.jar`和`tapestry-hibernate-5.3.7.jar`则与持久层...
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
【Tapestry4.1.2 入门-介绍】 Tapestry 是一个基于Java的Web应用程序框架,它提供了一种面向组件的开发方式,极大地简化了Web应用的构建过程。在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和...
Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...
《Tapestry 5 電子書》是关于Java Web开发框架Tapestry 5的一本详尽指南,由Packt Publishing在2007年出版。这本书旨在帮助开发者深入理解和掌握Tapestry 5的各个方面,从而利用其强大功能构建高效、可维护的Web应用...
Tapestry5.0.16文档和大家一起学习
每个组件都有自己的生命周期,可以接收属性、执行服务方法,并能与其他组件通信。依赖注入允许开发者解耦组件之间的关系,通过配置文件或注解实现对象的创建和管理。而类型安全事件模型使得组件间通信更加规范,避免...
**Tapestry API 深度解析** Tapestry,作为一个强大的MVC(Model-View-Controller)结合模板技术的Web开发框架,为Java开发者提供了一种高效且灵活的构建Web应用程序的方式。它通过组件化的设计,使得代码更加模块...
**Tapestry 实例详解** Tapestry 是一个开源的Java Web 应用程序框架,由Apache软件基金会维护。它采用组件化的方式构建Web应用,提供了丰富的功能和强大的性能优化,使得开发人员能够更加专注于业务逻辑,而不是...