Vaadin和Liferay IPC不同步错误

时间:2012-08-30 22:09:53

标签: java liferay vaadin

我在Liferay的同一页面上使用了2个Vaadin Portlet。第一个显示条目表,每行有一个按钮,显示有关此条目的详细信息。

当单击该按钮时,将发送IPC事件,该事件由第二个portlet接收,然后该事件也切换到显示内容的表视图。

通过单击第一个portlet上的关闭按钮,第二个portlet将再次收到一个IPC事件并返回其原始状态,这是一个只附有Liferay IPC监听器的空白视图。

我的问题是,在第三次点击后,我得到Liferay的不同步错误。当视图改变时,我总是将它附加到主窗口。所以我不创建具有相同名称的其他窗口。

当我在页面上只使用一个portlet时,我可以毫无问题地来回切换。可能是某些时候浏览器想要在客户端发起一个事件,但IPC已经在服务器端消失了?

很难确定这个问题的根源。

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。 IPC在客户端工作,不同步是由从客户端到服务器调用的非现有组件引起的。

可能有一些导致这种情况,但有些情况需要检查:

  • 你说你有一个关闭按钮,清除显示。可能会调用Application.close()吗?这实际上可能导致创建并调用新的(服务器端)应用程序实例而不是原始的。
  • 您可能正在创建IPC组件的新实例,但旧组件仍然已注册并尝试发送内容(到其不存在的服务器部分)。
  • JavaScript计时问题可能导致IPC事件以您可能期望的不同顺序发送。如果行为总是一致的话,我认为这不太可能,但仍有可能。

希望这有助于您缩小案例范围并找到解决方案。请更新此问题。