0

私はLiferayサイトのいたるところに行ってきましたが、うまくいく答えは見つかりませんでした。私がやりたいのは、カスタムポートレット内にAUIダイアログボックスを開くJavaScript関数を設定することです。このダイアログボックスには、完全に別のポートレットからのview.jspコンテンツが表示されます。

これが私がこれまでに得たものです:

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'
        }
    )
});

次に、まったく異なるポートレットに、次を呼び出すJavaScript関数があります。

window.myDialog.render()

これだけはうまくいきます。ただし、ダイアログが表示されると、常に空白になるか、「読み込み中」のアニメーションが無限に表示されます。

おそらく関連している:Firebugコンソールで、私は見ています

「yui:ロードされていません:遅延タスク」

それが現在の問題に関連しているかどうかはわかりません。助けてくれてありがとう。

編集: URL変数をコンソールに記録し、URLをコピーして新しいタブに貼り付けると、応答が完全に空白になります。これにより、URLが正しく生成されていないか、ここで何らかのポートレット間アクセス許可の問題が発生していると思われます。

4

1 に答える 1

1

これを理解しようとして壁に頭をぶつけて3日間過ごした後、Liferayのひどいドキュメントを掘り下げた後、解決策は非常に簡単でした。

それ以外の

url.setWindowState('pop_up'); 

それは次のようにする必要がありました:

url.setWindowState('exclusive');

私がそれをしたら、それは完璧に機能しました。

于 2012-01-18T23:54:54.477 に答える