Liferay Portlets中的事件

Rav*_*avi 5 events portlet communication liferay unique-id

在任何portlet应用程序中,如果在两个浏览器选项卡中打开包含portlet的同一页面,那么第一页中的事件与第二页的区别如何?

我想为每个事件分配一个唯一的Id,存储它并将其附加到URL,以便可以共享该链接.

有人能提出他们的想法吗?

此外,如果在其他计算机上打开页面URL,则页面上显示的数据与第一台计算机上显示的数据相同.这是全球设定的.

我怎么能消除这个?

Ton*_*Rad 1

JSR-286(最新的 Java Portlet 规范)定义了服务器端和客户端 Portlet 间通信 (IPC)。对于 Liferay 的实现,这里这里有很好的描述。

第一个问题:

在任何 Portlet 应用程序中,如果在两个浏览器选项卡中打开包含 Portlet 的同一页面,如何区分第一个页面中的事件与第二个页面中的事件?

  • 客户端 IPC:不可能在两个不同的浏览器选项卡之间触发和侦听 Liferay javascript 事件。所以它们会被自动区分。但是,您可以使用基于 cookie 的方法来实现它(如果感兴趣,请查看此处)
  • 服务器端 IPC:可以使用服务器端 IPC 在不同客户端窗口之间共享数据(服务器端)(请参阅上面 Liferay 的链接以获取示例)
第二个问题:

我想为每个事件分配一个唯一的 ID,存储它并将其附加到 URL,以便可以共享链接。有人可以对此提出他们的想法吗?

此外,如果在其他计算机上打开页面 URL,则页面上显示的数据与在第一台计算机上看到的数据相同。这是全球范围内设定的。我怎样才能消除这个问题?

  • 我假设您正在谈论相同的 Liferay 用户帐户(否则可以按 Liferay 中的角色、用户、组、用户组或组织来确定数据范围)。要区分同一用户的不同计算机之间的数据,您可以存储客户端计算机的状态信息并将其传回门户 cookie。请参阅此处了解如何在 Liferay 中设置 cookie。