执行没有渲染阶段的portlet事件阶段

时间:2014-02-20 14:08:24

标签: events liferay portlet

我需要在处理Action或Event阶段后执行取消renderProcessing(doView方法)(因为我不希望刷新整个页面或任何portlet)。类似于ajax资源获取的东西,它不会导致刷新所有portlet(我的意思是serveResource方法)。我们可以在ProcessAction或ProcessEvent结束时使用“destroy()”方法来阻止renderPhase执行。我在我的portlet中广泛使用MVCPortlet框架和事件ipc。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

正如Georgy Gobozov在评论中所说:你的问题的答案是“不”。

如果您正在使用标准portlet请求处理并依赖事件处理,那么您必须重新加载整页。没有任何东西可以阻止您实现自定义事件处理(例如,在浏览器上使用JS,通过业务层等),但不幸的是,您将不得不这样做。

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