1

我有一个 Liferay portlet,我通过 AJAX 执行一些操作。当我在 serverResource 中处理这些操作时,我想强制所有客户端呈现。我已经尝试了一些东西,但它们似乎只适用于每个客户。我所说的客户端是指在我的站点中执行操作的用户(即单击按钮以更改搜索容器中实体的状态)。

我尝试通过在更新实体时触发事件来使用客户端 IPC。当我的 AJAX 调用成功时,我触发了该事件,但该事件没有被我的其他客户端(我打开同一页面的第二个浏览器)捕获,因此除非我刷新我不刷新的页面,否则它不会刷新想要做。

我查看了配置发送方/接收方 portlet(我的一个 portlet 是发送方和接收方),但这看起来需要我提交会导致我的页面刷新的操作,所以不能使用它。我确实从 processAction 调用了 include 认为它会触发所有客户端的渲染,但只在发出 ajax 请求的客户端上工作。

在这一点上,我不知道如何强制所有客户端刷新,除非我设置像 ajax 轮询例程,这可能是我唯一的前进道路,但任何建议都值得赞赏。

4

1 回答 1

1

JSR 286 标准化了服务器端 IPC,屏幕上没有单个 portlet 的 Ajax 动态刷新。您必须让自己的 portlet 知道您将通过 JS 自己触发的事件,并且不能依赖门户容器中的任何(标准化)开箱即用的东西。

AFAIK serveResource 无法触发事件(但我没有仔细检查规范),如果确实如此,那么如果没有自定义代码,事件肯定不会通过 Ajax 触发任何渲染

于 2013-04-12T08:13:26.343 回答