2012-01-17 56 views
0

我已经遍布Liferay网站,并没有找到有效的答案。我想要做的是在我的自定义portlet中有一个JavaScript函数,它将打开一个AUI对话框,并且该对话框显示来自完全独立的portlet的view.jsp内容。在Liferay中,一个portlet可以在新的AUI对话框中打开一个单独的portlet吗?

这里是我到目前为止有:

AUI().ready('aui-dialog','aui-dialog-iframe','liferay-portlet-url', function(A) { 
     var url = Liferay.PortletURL.createResourceURL(); 
     url.setPortletId("my_portlet_that_I_want_in_a_dialog"); 
     url.setWindowState('pop_up'); 

    #foreach ($parameter IN $parameters.getSiblings()) 
     url.setParameter("${parameter.data}", "${parameter.value.data}"); 
    #end 


    window.myDialog = new A.Dialog(
     { 
      title: 'My Dialog', 
      width: 640, 
      centered: true 
     } 
    ).plug(
     A.Plugin.DialogIframe, 
     { 
      uri: url.toString(), 
      iframeCssClass: 'dialog-iframe' 
     } 
    ) 
}); 

然后,在一个完全不同的Portlet,我有一个JavaScript函数调用:

window.myDialog.render() 

该作品不多。但是,当出现对话框时,它总是空白或无限地显示“加载”动画。

可能与:在Firebug控制台,我看到

“衣:未加载:延迟任务”

不知道这是关系到当前的问题或不。谢谢您的帮助。

编辑:如果我将URL变量记录到控制台,然后将该URL复制并粘贴到新选项卡中,则该响应是完全空白的。这使我相信我要么没有正确生成URL,要么出现某种类型的portlet间权限问题。

+0

可能是因为没有加载的“延迟任务”导致整个脚本中断。否则,你的代码看起来不错。 – 2012-01-17 21:20:09

+0

我以为同样的事情,但无法找到任何有关如何加载的信息。 ROOT.war中Alloy文件夹下有一个延迟任务文件夹。 – nerdabilly 2012-01-17 21:22:10

+0

我还发现http://issues.liferay.com/browse/LPS-13893可能是您的问题的原因,并看到它在RC1中修复。你使用的是什么版本的6.1? – 2012-01-17 21:24:10

回答

1

经过3天的时间,我的头靠在墙上试图弄清楚这一点,并深入研究Liferay的糟糕文档,解决方案非常简单。

而不是

url.setWindowState('pop_up'); 

它需要的是:

url.setWindowState('exclusive'); 

一旦我做到了,它完美地工作。

相关问题