Liferay 理解操作阶段和渲染阶段的执行

Liferay 理解操作阶段和渲染阶段的执行,liferay,portlet,Liferay,Portlet,我正在使用Liferay 6进行门户开发 通过阅读本文,作者解释了Portlet执行有两个阶段 行动阶段 渲染阶段 公共类DateTimePortlet扩展了GenericPortlet { public void doView(RenderRequest req,RenderResponse res)抛出IOException,PortletException { 对象actionAttribute=req.getAttribute(“日期时间”); res.getWriter

我正在使用Liferay 6进行门户开发

通过阅读本文,作者解释了Portlet执行有两个阶段

  • 行动阶段
  • 渲染阶段
  • 公共类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要提供的常见页面片段