2012-01-17 33 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'); 

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

相關問題