页面类和页面事件
Tapestry框架是基于事件触发机制。当满足某些事件的触发条件时,Tapestry就会触发事件所对应的页面类中的方法。
页面类
Tapestry框架的思想是面向组件编程,因此页面也是一种特殊的组件。作为组件,它拥有一个规范文件,一个HTML模板,一个页面类和若干嵌入的组件。页面没有调用参数,因为页面是整个组件层次的最外层。页面与组件的差别在于他们的规范文件不同。
为了能够让Tapestry框架实例化页面实例,需要指定一个Java类作为页面类。通常可以在页面规范中指定页面类的路径,通过页面规范<page-specification>标签的class属性,例如:
代码
- <page-specification class=”com.tapestry4.page.Home”>
- </page-specification>
也可以通过应用程序规范文件统一为应用程序的所有页面类指定默认定位包路径。
代码
- <meta key=”org.apache.tapestry.page-class-packages” value=”com.tapestry4.page”/>
所有的组件都拥有一个隐藏得名称为page的组件属性,用以指名该组件最终被嵌入的页面,多有页面都有一个隐藏得名称为engine的页面属性,用以指明该页面正在调用的引擎对象。当页面第一次被激活的时候,Tapestry创建页面的单一页面类实例,并放入Tapestry缓存池中,以便同一个Web应用程序的不同session会话能够使用这个页面的页面类。缓存池中存放着满足服务器并发所需要的最少数量的页面实例。
通常情况下,页面类都继承于org.apache.tapestry.html.BasePage类,而BasePage类继承于org.apache.tapestry.AbstractPage类。BasePage类为我们提供了一个public ContentType getResponseContentType()方法,该方法返回用于响应的上下文类型。其实,我们完全可以直接让页面类继承于AbstractPage类。
假如我们的页面没有特殊的逻辑,就可以不为页面定义对应的页面类。这个时候,Tapestry会将BasePage类作为默认的页面类。因此,页面必须要有对应的页面类,只是有时候不用我们自己去创建而已。
如果我们认为BasePage类作为默认的页面类并不能满足我们的特殊需求,那么我们可以在应用程序规范文件中指定默认的页面类。例如:
代码
- <meta key=”org.apache.tapestry.default-page” value=”com.tapestry4.engine.MyBasePage”/>
页面事件
Tapestry框架是基于事件触发机制的,例如,我们通过submit触发Form组件的监听方法等。Tapestry的页面事件是指Tapestry的页面从Tapestry创建(或丛缓存池中获取页面类对象)类对象起,到销毁(或将页面对象放入缓存池)为止的整个过程所触发的方法。
Tapestry有5种页面事件,想要控制这些事件,就必须实现其对应的监听接口,Tapestry的所有页面事件的监听接口都位于org.apache.tapestry.event包下。
PageAttachlistener 当页面被当前请求第一次获取时,在页面持久化属性被回退为初始值之后触发 基于当前session状态创建页面属性,从应用程序整体状态对象中获取数据。
PageValidateListener 当页面被激活的时候触发,可以通过抛出PageRedirectException异常跳转到其他页面 通常用于检查用户是否有权访问该页面,有助于制定应用程序的安全规则。
PageBeginRenderListener 当页面开始表现的时候触发,这是最后一次更新持久化页面属性的机会 通常用于实现页面开始表现是需要实现的业务逻辑
PageEndRenderListener 当页面开始表现完毕之后,即便在页面表现是抛出异常,也仍然会触发 通常用于实现页面表现完毕时需要实现的业务逻辑
PageDetachListener 当页面与请求分离,页面类实例被Tapestry放回页面缓存池的时候触发 清除页面临时状态,清除所有客户端状态,将页面恢复到初始化状态
相关推荐
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
在这个“Tapestry学习文档”中,我们可以深入理解这个框架的核心概念和技术。 1. **组件化编程**: Tapestry的核心是组件,它将UI元素(如按钮、表单、列表等)封装为独立的、可重用的单元。每个组件有自己的状态...
【Tapestry笔记】 Tapestry是一个基于Java的Web应用框架,它采用了面向组件的开发方式,这使得它与其他如Structs、WebWork、SpringMVC等采用传统面向元素开发方式的框架有所不同。面向组件的开发模式旨在克服面向...
6. **tapestry用户手册.pdf**: 用户手册提供了关于Tapestry的全面参考信息,包括API文档、配置选项、问题排查等。对于日常开发来说,这是一份非常实用的工具书,可以帮助开发者迅速查找并理解各种功能和方法。 ...
本压缩包包含了丰富的Tapestry学习资料,总计约25M,涵盖了各种教程、教材和实践案例,对于想要深入理解和掌握Tapestry的开发者来说,是一份非常宝贵的资源。 1. **Tapestry基础** Tapestry基于组件模型,每个网页...
6. **模板和国际化**: 使用Tapestry,开发者可以创建HTML模板,并在其中嵌入Tapestry表达式来引用组件或数据。Tapestry还提供了强大的国际化支持,使得应用能够适应不同语言环境。 7. **性能优化**: Tapestry...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型...通过学习"Tapestry简单入门.rar"中的文档,你将能够掌握这个框架的基础知识,为进一步深入学习和实践打下坚实基础。
是一本由多本Tapestry资料整合而成。包括一些Tapestry的实例。
本文档旨在提供一个全面且易于理解的 Tapestry 学习指南,帮助初学者快速上手并掌握 Tapestry 5.1 的核心功能。 #### 第一章:搭建 Tapestry 5.1 开发环境 ##### 1.1 安装 JDK - **原因**:Tapestry 5.1 使用了 ...
6. **Tapestry-ioc-test**: 提供了Tapestry IoC的测试工具和辅助类,帮助开发者编写更完善的测试代码。 7. **Tapestry-webresources**: 处理应用中的静态资源,如CSS、JavaScript文件,确保它们能正确地被浏览器...
**Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代...虽然现在更现代的版本如Tapestry 5和Tapestry 6已经发布,但Tapestry 3仍然是理解Web开发历史和技术演进的一个重要参考。
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...
《Tapestry学习资料》是一份综合性的资源集合,涵盖了Tapestry框架的三个主要版本:Tapestry 3、4和5。这份资料旨在帮助开发者深入理解和掌握Tapestry框架,提升Web应用开发的效率和质量。 Tapestry是由Apache软件...
Tapestry5.0.16文档和大家一起学习
**Tapestry 实例详解** Tapestry 是一个开源的Java Web 应用程序框架,由Apache软件基金会维护。...通过深入学习和实践Tapestry,开发者可以创建出高效、可扩展的Web应用程序,享受到组件化开发带来的诸多益处。
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证...通过学习和实践Tapestry 5,开发者能够更好地理解和掌握现代Web应用开发的最佳实践。
6. **切换皮肤**:在Tapestry中,可以轻松实现皮肤的切换,这通常涉及到更换CSS样式表和可能的图片资源。开发者可以通过配置文件或程序逻辑来改变应用的外观,满足不同用户需求。 7. **自主分页**:Tapestry提供了...