Events 在没有呈现阶段的情况下执行portlet事件阶段

Events 在没有呈现阶段的情况下执行portlet事件阶段,events,liferay,portlet,Events,Liferay,Portlet,我需要在处理操作或事件阶段之后取消执行renderProcessing(doView方法)(因为我不希望刷新整个页面或任何Portlet)。类似于ajax资源获取,它不会导致刷新所有Portlet(我指的是ServerResource方法)。我们可以在ProcessAction或ProcessEvent的末尾使用“destroy()”方法来阻止RenderPase执行吗。我在Portlet中广泛使用MVCPortlet框架和事件。谢谢你的帮助。正如乔治戈博佐夫在评论中所说:你的问题的答案是“不”

我需要在处理操作或事件阶段之后取消执行renderProcessing(doView方法)(因为我不希望刷新整个页面或任何Portlet)。类似于ajax资源获取,它不会导致刷新所有Portlet(我指的是ServerResource方法)。我们可以在ProcessAction或ProcessEvent的末尾使用“destroy()”方法来阻止RenderPase执行吗。我在Portlet中广泛使用MVCPortlet框架和事件。谢谢你的帮助。

正如乔治戈博佐夫在评论中所说:你的问题的答案是“不”

如果您使用的是标准的portlet请求处理,并且依赖于事件处理,那么您将绑定到一个完整的页面重新加载。没有什么可以阻止您实现自定义事件处理(例如,在浏览器上使用JS,通过业务层等),但不幸的是,您必须做到这一点


当您启动原始请求时(例如通过操作处理程序),页面已经开始重新加载(从浏览器的角度)。任何取消处理服务器端的尝试都会导致流中断,浏览器会在页面上发出错误信号(例如“无法加载”):结果必须带有HTTP状态,并且很可能是错误代码(例如50x),或者它必须包含整个页面的HTML。

不可以。您只能重写destroy方法,此方法应由容器调用。为什么不使用ajax和ServerSource?因为我的portlet接收事件并将事件发送到其他portlet以运行多级过程,我不想让它们在每次事件处理中刷新页面.也许我应该重写doView进程,根据某些条件或参数忽略某些特定的RenderRequest集(但如何忽略?)