精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-21
Liferay 的 portal 渲染过程好像很神奇,特别是当前4.2版还增强了渲染,实现了parallel rendering。也就是当打开portal页面时首先可以看到整个portal布局,每个portlet会先显示为一个进度条,过会portlet才 会被显示出来。 现在不妨随我trace一下liferay 的代码, 看看liferay是怎么渲染出整个页面,并且了解如何实现parallel rendering。 首先发现一个现象,liferay中的所有url都是/c/portal/layout开头的。说明什么? liferay portal建立在strtus tiles上,所以我们首先要关注一下strtus-config.xml <action type="com.liferay.portal.action.LayoutAction" path="/portal/layout"></action> xml 代码
果然,这个url会forward到portal.layout上。找一下tiles的定义文件,和tiles 的定义文件 <definition name="portal" path="/common/themes/portal.jsp"></definition>万里长征第一步,找到目标了,接着看portal.jsp中有什么 xml 代码
且慢,portal_noraml.jsp头部有一句,<!---->,此文件大有含义,立马打开查看 再联系刚才的tiles定义里有 跟随这这条路下去,会发现 跟踪到此没了头绪。有一个TemplateProcessor,好像是处理模板的,但是被Velocity.evaluate封装了。 所谓条条大路通罗马,我们从另一个方向开始trace。 现在还差最后的任务了,怎么把我们找到的两条线搭扣起来?继续刚才的手法,工程里再找引用load_render_portlet.jsp的部分。 我们重头开始整理一下,当打开一个portal页面时,url会映射到 之后就是 通过这次探索,我们还知道,Liferay 4.2中parallel rendering是用ajax实现的。 但是这次探索还不令人完全满意,遗留有几个未完之处 如果说我们到这步算是完成了二万五千里长征,那么离全面胜利还有很艰难的一段要走,各位朋友不妨暂待后文。当然更欢迎各位亲自动手,弄清楚liferay的整个后台机制。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-25
|
|
返回顶楼 | |
发表时间:2007-03-13
发现平行 rending的一个问题,如果liferay不是部署到根应用,则平行 rending不能正常显示 portlet,他会一直rending。只有第一次加到portal page的时候,它才会显示,如果一刷新页面portlet就一直显示进度条了
|
|
返回顶楼 | |
浏览 6357 次