friendly url是liferay的一个功能.在liferay里,可以将portal系统生成的复杂的url转换成好记的url.
比如在我的liferay 4.3.1环境下
http://localhost:8080/c/portal/layout?p_l_id=10125&_19_messageId=10505&p_p_id=19&p_p_state=maximized&p_p_action=0&_19_struts_action=%2Fmessage_boards%2Fview_message
和
http://localhost:8080/web/26/1/message_boards/message/10505
是同一个页面.
程序是如何将原来复杂的url转换成那么简单的friendly url的,当程序要处理friendly url时,又是如何处理的呢?
具体的调试跟踪过程不再赘述,这是一个有趣而痛苦的过程,这里我只列出最后的调试结果
liferay解析friendlyurl的过程
- 浏览器提交friendlyurl
- FriendlyURLServlet.service处理
- 调用getRedirect
从url里能够截取 groupid,layoutid (url中的/26/1)
- 调用PortalUtil.getLayoutActualURL
- 从liferay-portlet.xml中查询friendly url mapper
- 根据mapper的getMapping方法和url中截取的相匹配,查到对应的mapper(url中的message_boards)
- 调用mapper的populateParams,将friendly url转换为参数对(message_boards/message/10505->_19_messageId=10505; _19_struts_action=%2Fmessage_boards%2Fview_message)
- 从前面查出的groupid,layoutid,查询出plid (/web/26/1->p_l_id=10125)
- 补充其余的参数(p_p_action,p_p_state)
- 返回原始的url给FriendlyURLServlet
- forward该url
接下去和以前版本一样,由MainServlet处理
以上流程见下图
liferay生成friendlyurl的过程
- 页面获得PortletURL实例(renderResponse.createActionURL() renderResponse.createRenderURL())
- PortletURLImpl.generateToString()
- PortalUtil.getLayoutFriendlyURL 构造出groupid和layoutid样式的url
- 调用getPortletFriendlyURLPath
- 从_portlet.getFriendlyURLMapper()查询mapper
- 如果由mapper,那么调用mapper.buildPath,mapper会将原先的parameter转换成friendlyurl
- 将页面url和protleturl合并,在页面上显示最终的friendlyurl
以上流程见下图
分享到:
相关推荐
7z压缩 三合一LifeRay资料: 1、LifeRay开发参考手册(温兵) 2、LifeRay二次开发指南 3、LifeRay4.3中文开发指南
liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器
liferay development 中文
配置 和二次开发 详尽描述 是liferay开发的必备手册
Liferay开发指南(中文)和liferay详细介绍(英文)
Liferay Portal Liferay IDE
liferay6中文开发文档 包括: Liferay6开发者手册V1.0.doc Liferay+6.0.5开发指南.docx LiferayPortal二次开发指南.pdf Liferay代码研读.pdf liferay-技术文档.doc liferay架构.pdf Liferay开发环境配置说明文档.pdf
Liferay中的AUI框架,官方叫做Alloy,是一个UI超框架,能为浏览器的三方面,结构,风格和表现建立网络应用提供连续的简单的API。 它融合了三种设计语言:HTML, CSS 和 JAVA。 准确来说AUI是Liferay在YUI的基础上...
Liferay 解决中文翻译不准确方法.doc
liferay如何在eclipse中配置开发和debug环境,官方详细的资料,照着做就ok了,有什么问题可以联系我
Liferay 主题开发 官方文档 中文翻译
自己在学习liferay6.2开发主题时的一些总结,对于初学者理解portal_normal.vm中各部分的作用有帮助,需要的话可以了解一下……
该文档是在Liferay5.1.2中应用struts的示例,使用时只要现创建一个portlet,然后解压缩并利用该文档中相同的部分将其覆盖,然后build,deploy后,即可看到其结果,安装使用都及其方便。
liferay 内置在jsp中的对象 liferay jsp 内置 对象
虚拟工厂会生成虚拟数据以供调试使用。 请不要将此用于生产用途。 虚拟工厂生成什么? 组织机构 网站 页数 用户数 网站内容文章 文件资料 留言板(主题/类别) 类别(类别/词汇) 维基 网志 公司 所需环境 Java ...
这是本人工作了2年有关liferay中的所有技术详细日记 很珍贵
liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南
liferay 超级学习文档 liferay 框架 java hibernate liferay 不用多说
详细介绍了在linux系统下怎么安装liferay的过程,
liferay中的配置文件的几处修改