概述:
T5的构成
T5由一下模块构成:
Tapestry-ioc :T5的开发基础,
Tapestry-core :T5的web开发框架(使用 Tapestry-ioc)
Tapestry-annotation :用于开发T5应用程序的Annotation
Tapestry-upload : T5上传使用的子项目。由Tapestry-core调用
Tapestry-test : T5的单元和功能测试子项目
tapestry-hibernate : T5 和bibernate集成包
tapestry-spring :T5和spring集成包
组件(COMPONETS)
T5的组件由两部分组成:
一个java文件
l POJO 不能继承其他类
l 一个没有参数的构造函数(有其他的就忽略)
l 应用tapestry annotations(定义参数,引用其他组件服务)
l 只有在呈现页面的时候才调用tapestry annotations
一个HTML 模板
l 有效的xml文档包含了大部分的(x)html元素
l 关联了tapestry命名空间
l 组件的扩展名为“.tml” 标识 “Tapestry Markup Language”
页面(PAGES)
页面和组件也结构上是一样的由一个java文件和html模板组成。
页面和组件的实质性差别在
l 他们的命名 页面在pages目录下 组件在components下
l 组件没有激活阶段(这里不怎么理解)
页面和组件是建立在相同的机制上,但是为为了不同的目的。
请求处理模式
T5分为两种请求模式:动作(Action) 和 呈现 (Rendering)
通常情况下是用户有了一个动作后就转向了呈现类型的请求
目标是为了避免用户在使用浏览器时使用 刷新、后退、F5的不方便。有些动作执行了好几次。同时提供了“书签式”的URL格式
可以查看 http://tapestry.apache.org/tapestry5/tapestry-core/guide/pagenav.html
细节的区别:
动作(Action)
l 在一个某个页面一个给定的组件中产生的事件
l 事件返回值决定将有什么信息返回到客户端(大多数情况是 重转向到呈现类型的请求)
l 例如 login/password check然后转向应用的主页面
呈现(Rendering)
l 执行一个页面生成html页面给客户端
l 页面需要一个激活的上下文(例如页面显示元素的ID)
l 例如显示一个产品页
动作(Action)事件管理
呈现(Rendering)管理
页面的生命周期
T5采用“对象池”来存储和重复调用已经创建的页面/组件实例
通过组件的生命周期使它能在正确的时间执行初始化动作
T5允许我们在组件的生命周期的任何步骤执行动作。通过一下三种方式:
l @PageLoaded:只有当页面第一次被创建而且是第一和组件关联的时候才调用,是在实例化的时候不能执行处理过程变成可能。例如:注入服务(这里不太懂)
l @PageAttached:当页面关联到线程上处理我们的请求的时候调用
l @PageDeTached:当请求处理完成返回到页面池的时候调用
生命周期(第一次访问页面)
第二次访问相同的页面