首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Tapestry3源码翻阅笔记2:PageLoader/PageSource

2012-09-02 
Tapestry3源码阅读笔记2:PageLoader/PageSource之前提到Page类是缓存在Pool类里的。这里我们来看Page类的保

Tapestry3源码阅读笔记2:PageLoader/PageSource

之前提到Page类是缓存在Pool类里的。这里我们来看Page类的保存加载过程。



Page是通过PageLoader来进行实例化的,PageLoader这个类用做实例化所有组件,包含Page。并且将组件的下属组件进行递归组装。
这里只看加载Page的loadPage方法,Page类的初始化就是从这个方法中出来的。这个方法里主要的代码如下:
IPage result = (IPage) _pool.retrieve(key);if (result == null){PageLoader loader = getPageLoader(cycle);try{result =loader.loadPage(pageSpecificationResolver.getSimplePageName(),pageSpecificationResolver.getNamespace(),cycle,pageSpecificationResolver.getSpecification());}finally{discardPageLoader(loader);discardPageSpecificationResolver(pageSpecificationResolver);}}else{// The page loader attaches the engine, but a page from// the pool needs to be explicitly attached.result.attach(engine);}
?

释放page是在releasePage方法内实现的。好简单。首先调用page的detach方法,然后将page放回到pool中。

热点排行