【问题标题】:Eventing in Liferay PortletsLiferay Portlet 中的事件
【发布时间】:2011-12-29 10:36:13
【问题描述】:

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

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

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

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

我怎样才能消除这种情况?

【问题讨论】:

  • 你有没有碰巧找到答案?谢谢

标签: events communication liferay portlet unique-id


【解决方案1】:

JSR-286 (latest Java Portlet Specification) 定义服务器端和客户端的 Portlet 间通信 (IPC)。对于 Liferay 的实现,它们在 here 和 here 中得到了很好的描述。

第一个问题:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多