Ajax Liferay MVCPortlet上非独立的并行portlet实例
我试图在Liferay 6.1.1上使用基于MVCPortlet的portlet,但它的行为与我预期的不同。我的portlet应该是独立的,但不是 我的需要:Ajax Liferay MVCPortlet上非独立的并行portlet实例,ajax,jsp,liferay,portlet,Ajax,Jsp,Liferay,Portlet,我试图在Liferay 6.1.1上使用基于MVCPortlet的portlet,但它的行为与我预期的不同。我的portlet应该是独立的,但不是 我的需要: 我有一个带有表单的第一个portlet 我有几个基于MVCPortlet的portlet B实例 提交表单时,portlet A启动一个事件,所有portlet B都接收该事件。当portlet B接收到事件时,它必须构建一个URL,连接到该URL并从中读取数据,然后显示结果 My B portlet基于MVCPortlet,是可实例
- 我有一个带有表单的第一个portlet
- 我有几个基于MVCPortlet的portlet B实例
基于您异步呈现所有B Portlet的意图,我假设呈现可能需要一段时间——事件处理应该尽快继续。否则,如果整个结果已经存在,则异步渲染没有意义。1)由于处理可能很长,而且我希望异步完成,因此我无法在事件处理中执行。因此,我尝试为每个portlet执行一个操作。这就是为什么每个portlet显示一个启动操作的jsp页面(基于ActionURL的表单验证)。有没有其他方法可以异步处理?我不太熟悉portlet和MVCPortlet框架(2),但每个portlet都应该有自己的会话。在这种情况下,它们都共享同一个PortletSession,这让我感到惊讶。无论如何,这对我来说不是问题,我也不把数据放在MVCPortlet中。更重要的是,portlet呈现似乎会重新加载整个页面,而instanceable/ajaxable/render weight=0应该可以避免这一点。。。大部分处理都是在动作处理中完成的,这是很长的一部分。我将数据放在会话中,然后在jsp中获取数据并显示它。您可以在eventhandler中触发异步处理—只需将其定位在业务层,而不是UI层(portlet)。请记住,Portlet是UI技术,它下面应该有一个适当的业务层。然后只需保留一个指向异步进程的指针(例如作为渲染参数),并在渲染阶段拾取结果。它的渲染可以是异步的。为了使操作处理是异步的,您需要生成适当的HTML代码并自己实际执行一些操作——否则您将处于默认的操作全页面重新加载状态。在我看来,jsp应该处理表示层,而“servlet”,这里是MVCPortlet,用来处理业务部分。若我在eventhandler中启动异步处理,如何在数据准备就绪时刷新显示?当portlet被刷新时,我可能仍然有刷新整个页面的问题。。。当我尝试使用JSF portlet时,从这个角度来看,它工作得非常好,每个实例都是独立的。您可以这样说,但您也可以将整个portlet层看作是应用程序的视图层。毕竟,Portlet通常集成了很多不同的后端技术。仅仅因为您使用portlet,您就不希望业务代码中到处都是“import javax.portlet.*”,对吗?