Liferay 理解操作阶段和渲染阶段的执行
我正在使用Liferay 6进行门户开发 通过阅读本文,作者解释了Portlet执行有两个阶段Liferay 理解操作阶段和渲染阶段的执行,liferay,portlet,Liferay,Portlet,我正在使用Liferay 6进行门户开发 通过阅读本文,作者解释了Portlet执行有两个阶段 行动阶段 渲染阶段 公共类DateTimePortlet扩展了GenericPortlet { public void doView(RenderRequest req,RenderResponse res)抛出IOException,PortletException { 对象actionAttribute=req.getAttribute(“日期时间”); res.getWriter
公共类DateTimePortlet扩展了GenericPortlet
{
public void doView(RenderRequest req,RenderResponse res)抛出IOException,PortletException
{
对象actionAttribute=req.getAttribute(“日期时间”);
res.getWriter().println(“日期时间:+(actionAttribute!=null?actionAttribute:“不可用”);
res.getWriter().println(“
”);
PortletURL u=res.createActionURL();
res.getWriter().println(“触发操作”);
res.getWriter().close();
}
public void processAction(ActionRequest req、ActionResponse res)抛出PortletException
{
setAttribute(“datetime”,new Date());
}
}
我的理解是doView
方法称为“渲染阶段”,processAction
方法称为“操作阶段”
如果一个页面上显示了5个portlet,则每次页面刷新都会执行“呈现阶段”(即doView
方法中的代码)
请让我知道我是否正确。是的,正确:每个请求最多有1个portlet处理一个操作,但是页面上的所有portlet都将运行一个呈现请求(除非缓存输出,但我们先把这些高级内容放在一边) 当仅完成呈现时,请求上也可以有0个操作处理(这是通常在portlet上执行的最常见的操作。在此阶段,您必须(并且不能)更改任何状态) 在一个操作之后,可以触发事件阶段(参见Portlet间通信,IPC),该阶段可以在任意数量的Portlet上执行 如果您不想重新加载整个页面,那么您必须研究资源阶段,在资源阶段,您可以处理AJAX调用并提供各种不同的资源,而不是portlet要提供的常见页面片段