我有一个Liferay portlet,我在via AJAX中执行了一些操作。当我在serverResource中处理这些操作时,我想强制所有客户端进行渲染。我尝试过一些东西,但它们似乎只对每个客户起作用。客户端的意思是我的网站中的用户执行操作(即单击按钮以更改搜索容器中实体的状态)。
我尝试在实体更新时触发事件来使用客户端IPC。我的AJAX调用成功时触发了事件,但事件没有被我的其他客户端捕获(第二个浏览器我已打开到同一页面)所以它不会刷新,除非我刷新我没有的页面想做。
我查看了配置发送方/接收方portlet(我的一个portlet是发送方和接收方),但看起来我需要提交会导致我的网页刷新的操作,所以不能使用它。我确实调用了来自processAction的include,认为它会触发所有客户端的渲染,但只能在发出ajax请求的客户端上工作。
此时,我不知道如何强制所有客户端刷新,除非我设置为ajax轮询例程,这可能是我唯一的前进路径,但任何建议都值得赞赏。
答案 0 :(得分:1)
JSR 286标准化了服务器端IPC,屏幕上没有单个portlet的Ajax动态刷新。您必须让自己的portlet知道您将通过JS触发的事件,并且不能依赖门户容器中的任何(标准化)开箱即用。
AFAIK serveResource无法触发事件(但我没有仔细检查规范),如果确实如此,一个事件肯定不会通过Ajax触发任何渲染而没有自定义代码