在 Liferay 中弹出窗口显示 portlet

3

我正在尝试从另一个portlet中展示一个先前创建的portlet,但弹出窗口为空。 首先,我创建了renderURL:

<liferay-portlet:renderURL var="testPopupURL" portletName="<%=rule.getBannerPortletId() %>" windowState="<%=LiferayWindowState.POP_UP.toString() %>"></liferay-portlet:renderURL>

我会做链接:

<aui:a href="#" onClick="showPopup('${testPopupURL}')">View</aui:a> 

这是函数showPopup:

    function showPopup(url){
    console.log("En el showPopup ");
    AUI().ready('aui-dialog', 'aui-io', 'event', 'event-custom', function(A) {
        window.myDialog  = new A.Dialog({
            title: 'Banner',
            width: 640,
            centered: true
        }).plug(A.Plugin.DialogIframe, {
                uri: url.toString(),
                iframeCssClass: 'dialog-iframe'
        }).render();
    });
}

我在 liferay-portlet.xml 中添加了以下代码 (我希望在弹出窗口中打开这个 portlet):
<add-default-resource>true</add-default-resource>

这个portlet是可实例化的,bannerPortletId就是portletId。
有什么想法吗?
谢谢。

你能尝试使用"portlet_bannerPortletId_WAR_bannerPortletId_INSTANCE_d3Go"作为 portletName 吗? - Pankaj Kathiriya
如果我像portletName这样放置它,弹出窗口也是空的。那么我猜测对话框没有捕获到URL?:S谢谢 - sandra
哪个Portlet是可实例化的?是弹出窗口内的Portlet还是调用弹出窗口的Portlet? - Prakash K
如果您正在尝试在弹出窗口中显示JSF portlet,请查看我的答案:https://stackoverflow.com/questions/35162383/how-can-i-open-a-pop-up-of-my-jsf-portlets-edit-mode/35162384#35162384 - stiemannkj1
1个回答

3
最终我成功显示了portlet。我使用JavaScript创建了URL:
    var url;
    function createRenderURL(portletId) {
    AUI().ready('liferay-portlet-url', function(A) {
        var renderURL = Liferay.PortletURL.createRenderURL();
        renderURL.setName("Banner");
        renderURL .setPortletMode("edit");
        renderURL .setWindowState("pop_up"); 
        renderURL.setPortletId(portletId);
    url = renderURL.toString();
    });
}

展示弹出窗口的代码是相同的,但我传递了 portletId 作为参数,并调用了 createRenderURL 函数。

    var url;

function createRenderURL(portletId) {
    console.log("en el createRender");
    AUI().ready('liferay-portlet-url', function(A) {
        var renderURL = Liferay.PortletURL.createRenderURL();
        renderURL.setName("Banner");
        renderURL .setPortletMode("edit");
        renderURL .setWindowState("pop_up"); 
        renderURL.setPortletId(portletId);
        console.log(renderURL);
        url = renderURL.toString();
    });
}

我希望这对某些人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接