【问题标题】:Insert a liferay portlet into PrimeFaces dialog将 liferay portlet 插入 PrimeFaces 对话框
【发布时间】:2014-05-28 17:02:51
【问题描述】:

我正在使用 liferay 6.1、jsf 2 和 primeface 4.0。我在 liferay tomcat 上运行了两个不同的项目。我想将“项目 1”的 portlet 插入“项目 2”的 primefaces 对话框中。

我尝试使用 ui:insert,但它采用当前项目的源路径。在这种情况下如何进行?

【问题讨论】:

    标签: jsf-2 primefaces liferay liferay-6


    【解决方案1】:

    使用 ui:insert,您可以插入 html 代码,而不是整个 portlet! 所以你应该:

    1. 创建一个可以从两个portlet 看到的通用xhtml 页面。这要求您在同一个插件项目中拥有两个 portlet
    2. 在对话框中,您可以包含指向门户另一个页面的链接,而不是插入代码,其中放置了“project2”portlet

    【讨论】:

    【解决方案2】:

    我设法解决了这个问题。

    1. Liferay 提供了每个 portlet 的生成 URL 功能。所以我为目标 portlet 创建了一个 URL。

    2. 然后将该网址传递给 liferay 弹出窗口。

    这是我的代码:

    <script type="text/javascript" charset="utf-8">
    var url;
    function createRenderURL() {
    
    AUI().ready('liferay-portlet-url', function(A) {
    
    var renderURL = Liferay.PortletURL.createRenderURL();
    
    renderURL.setName("Banner");
    renderURL .setPortletMode("view");
    renderURL .setWindowState("pop_up");
    renderURL.setPortletId("addUser_WAR_UserManagementportlet");
    url = renderURL.toString();
    showPopup(url);
    });
    }
    function showPopup(url){
    
    console.log("En el showPopup ");
    AUI().ready('aui-dialog', 'aui-io', function(A) {
        alert(url);
        window.myDialog  = new A.Dialog({
            title: 'Banner',
            width: 640,
            centered: true
        }).plug(A.Plugin.IO, {
                uri: url
        }).render();
    });
    

    }

    希望对他人有所帮助。谢谢。

    【讨论】:

      猜你喜欢
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多