【问题标题】:Inter portlet communication in liferayLiferay 中的 Portlet 间通信
【发布时间】:2011-07-28 03:15:49
【问题描述】:

我是 Liferay 的新手。所以,我只想解释一下我的场景。

实际上我的网页上有两个 portlet - 一个在左侧,另一个在右侧:

  • 左侧的 Portlet 包含两个超链接,例如 demo1 和 demo2。
  • 我还有另外两个 portlet,分别是 demo1Portlet 和 demo2Portlet。
  • 将显示“demo1Portlet”而不是右侧的 portlet 默认。
  • 现在我要做的是,如果我点击 demo2 链接,那么右侧 portlet 会改变,它会显示“demo2Portlet”,如果我点击 在 demo1 链接上,它将在右侧显示“demo1Portlet”。

谁能知道我怎样才能完成这项任务?

请尽快回复我。

我是liftray的新手,所以我不知道这是否可以通过IPC或没有它来实现。请解释任何方式。

谢谢。

【问题讨论】:

    标签: java liferay portlet


    【解决方案1】:

    有几种不同的方式可以让 portlet 相互通信。大多数都包含在IPCdescendant pages 的文档中。

    在您的情况下,您应该真正查看client-side 页面:

    你的基本结构

    <a href="javascript:void(0)" class="comm-demo">demo[number]</a>
    

    您将在“发送器 portlet”上拥有这个 JS:

    // you may need to have jQuery instead of $. Liferay may have its own 
    // $ function which jQuery shouldn't mess with.
    $( function () { 
          $('a.comm-demo').click( function(event) { 
               var txt = $(this).next().val(); // demo<number> 
               Liferay.trigger('click', {text: txt}); 
               return false; 
          }); 
     });
    

    然后在“接收 portlet(s)”上:

     Liferay.bind( 
          'click', 
          function(event, data) { 
               var txt = data.text;
               // this will set all class-of-fields to have the text 
               // "demo<number from above>Portlet"
               $('.class-of-fields')[0].html(txt + "Portlet"); 
               // I believe there is a way to minimize/maximize a portlet by 
               // simulating a mouse click, but research would be needed to 
               // confirm.
     });
    

    【讨论】:

    • +1 关于一个开箱即用的解决方案,它不像许多解决方案似乎都属于此类编码一样,它不属于钩子/portlet 类型的解决方案。
    • 在门户世界中,我推荐 IPC 方式,因为它可以巧妙地处理命名空间问题——您可以在接收此类 javascript 事件的页面上拥有各种“匹配”html。另外,IPC 是处理服务器端对此反应的方法。但是,它通常涉及页面重新加载。另外,请注意,上面的代码使用的是 jquery,它已包含在 Liferay 5.2 中,但在版本 6 中已替换为 AlloyUI(一个 YUI 扩展)。而且,使用 jQuery,您肯定需要使用兼容模式,例如使用“jQuery”,上面的代码显示“$”(如注释)
    • 试试这个链接..很有帮助..velvettools.com/2013/02/…
    猜你喜欢
    • 2011-07-25
    • 2015-03-06
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多