5

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

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

有人可以提供他们对此的想法吗?

此外,如果页面 URL 在其他计算机上打开,则页面上显示的数据与在第一台计算机上看到的数据相同。这是在全球范围内设置的。

我怎样才能消除这个?

4

1 回答 1

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。
于 2012-11-06T19:50:06.260 回答