`
Lincoln
  • 浏览: 80556 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tapestry学习笔记(6)

阅读更多
页面类和页面事件

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的学习笔记,全都是从网上整理的

    tapestry学习入门资料

    强大的tapestry框架的学习入门资料,详细介绍了tapestry的常用开发文档。

    Tapestry 学习文档

    Tapestry~需要学习资料的进来看看 纯英文原版

    tapestry4和5学习资料

    该包包含: Tapestry5最新中文教程.doc tapestry.pdf tapestry开发流程.docx Tapestry开发指南0.8.pdf tapestry用户手册.pdf

    史上最全面Tapestry学习教程

    很不错的tapestry入门手册,安装教程学习后,基本可以熟练使用tapestry,极大提示开发效率。史上最全面Tapestry学习教程,Tapestry学习资料,适合入门

    tapestry学习资料汇总

    本人搜集的tapestry学习资料,压缩后25M左右。其中很多资料很难得。应该说对tapestry开发者有很大帮助。

    Tapestry5.1学习全集多本书整合

    是一本由多本Tapestry资料整合而成。包括一些Tapestry的实例。

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    深入浅出Tapestry

    使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的先进经验。本书详细介绍了Hivemind框架的原理与应用,使读者不但可以通过Hivemind来重构Tapes 资源太大,传百度网盘...

    Tapestry5.0.16_API文档

    Tapestry5.0.16文档和大家一起学习

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    tapestry官方中文文档

    Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下

    tapestry 实例

    tapestry 实例tapestry 实例tapestry 实例tapestry 实例

    深入浅出tapestry

    使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的先进经验。, 本书详细介绍了Hivemind框架的原理与应用,使读者不但可以通过Hivemind来重构Tapestry的官方实现,还...

    tapestry3开发指南,带tapestry3所有jar包

    tapestry3开发指南,带tapestry3所有jar包

    Tapestry4开发指南

    Tapestry4开发指南

    tapestry5.2.6 jar包

    tapestry5.2.6 最新jar包,Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层

    tapestry技术

    tapestry技术 Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得...

    tapestry-src-5.1.0.5.zip

    包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations

Global site tag (gtag.js) - Google Analytics