Liferay Portal学习笔记:portlet执行的两个阶段

来源:互联网 发布:mac air 双系统 编辑:程序博客网 时间:2024/05/17 03:46

Portlet有两个执行阶段:action阶段和render阶段。


portlet规范定义了每个portlet的请求,允许portal去区分什么时候一个action被执行(不会被重复)和什么时候一个内容页被打开(rendered):


Action:一次只能调用一个给一个portlet,是用户和Portlet交互的结果。在这个阶段,Portlet可以改变它的状态,比如改变portlet的用户属性。任何对数据库的插入和修改或者不被重复执行的操作都在这个阶段完成。


Render:在action阶段后(也有可能没有action阶段),可以被调用给所有的Portlets。需要指出的是,一个页面的portlet的render阶段的执行指令并不能被portlet规范保证。Liferay通过liferay-portlet.xml的render-weight来扩展这个规范。有更高的render-weight的portlet会比低render-weight的portlet先执行。



从Action阶段传送信息到Render阶段有两种方式:


第一种是通过renderParameter传送,调用setRenderParameter给request增加一个新的参数:actionResponse.setRenderParameter(“parameter-name”,"value");


在render阶段,这个值可以这样被读取:renderRequest.getParameter("parameter-name");


*当引用一个action URL时,URL里的参数只在action阶段可读。为了传递参数到render阶段,必须在actionRequest中读取它,然后调用setRenderParameter方法。


0 0