gpt4 book ai didi

java - 用于在弹出窗口中打开另一个 portlet 的 PortletURL

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:04 24 4
gpt4 key购买 nike

我有一个用于 create_account.jsp 的钩子(Hook)。在这个 jsp 中,我有一个 javascript 代码,我尝试在 iframe 弹出窗口或 Liferay 的一些弹出窗口中打开一个 portlet。

问题是:
如何给portlet URL?
我怎样才能访问它?
在那个 portlet 中,我只想问一个带有"is"或“否”的问题,并根据用户的回答重定向到其他页面。

最佳答案

  1. 要创建 URL,您可以使用 <portlet:renderURL><liferay-portlet:renderURL>

    <liferay-portlet:renderURL
    var="testPopupURL"
    portletName="testPopup_WAR_testPopupportlet"
    windowState="<%=LiferayWindowState.POP_UP.toString() %>">
    <liferay-portlet:param name="paramToPopup" value="customParameterToThePortlet" />
    </liferay-portlet:renderURL>

    portletName="testPopup_WAR_testPopupportlet" 这是您要打开的 portlet 的 portletId。

    windowState="<%=LiferayWindowState.POP_UP.toString() %>" 这对于仅在弹出窗口中显示 portlet 很重要,否则它将打开带有导航和所有内容的完整 liferay 页面。

  2. 您可以在 JSP 中编写的 javascript 以使用上述 URL 并在其中打开弹出窗口和 portlet:

    // this is one of creating function
    function <portlet:namespace />showPopup(url) {

    var url = url;

    // this is one way of calling a pop-up in liferay
    // this way is specific to liferay
    Liferay.Util.openWindow(
    {
    dialog: {
    cache: false,
    width:800,
    modal: true
    },
    id: 'testPopupIdUnique',
    uri: url
    }
    );
    }

    // this is another way of creating a function in liferay
    Liferay.provide(
    window,
    '<portlet:namespace />showAUIPopUP',
    function(url) {
    var A = AUI();

    // this is another way of calling a iframe pop-up
    // this way is not specific to liferay
    popupDialog = new A.Dialog(
    {
    id: 'testPopupIdUnique',
    centered: true,
    draggable: true,
    resizable: true,
    width: 800,
    stack: true
    }
    ).plug(
    A.Plugin.DialogIframe,
    {
    uri: url,
    iframeCssClass: 'ogilvy-dialog-iframe'
    }
    );

    popupDialog.render();
    },
    ['aui-dialog','aui-dialog-iframe']
    );
  3. 您可以像这样简单地调用这些 javascript 函数:

    <a href="javascript: <portlet:namespace />showPopup('<%=testPopupURL%>')">
    Popup using Liferay open-window
    </a>

    <a href="javascript: <portlet:namespace />showAUIPopUP('<%=testPopupURL%>')">
    Pop-up using Alloy UI dialog
    </a>
  4. 将在 iframe 中显示的 portlet弹出窗口的应该有 <add-default-resource>true</add-default-resource>liferay-portlet.xml作为:

    <portlet>
    <portlet-name>testPopup</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>false</instanceable>
    <header-portlet-css>/css/main.css</header-portlet-css>
    <footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
    <css-class-wrapper>testPopup-portlet</css-class-wrapper>
    <!-- This property is necessary otherwise you would see a "Access denied for portlet" message when you try to open this portlet dynamically -->
    <add-default-resource>true</add-default-resource>
    </portlet>
  5. 或者应该有属性portlet.add.default.resource.check.whitelistportal-ext.properties作为:

    portlet.add.default.resource.check.whitelist=3,56_INSTANCE_0000,58,82,86,87,88,103,113,145,164,166,170,177,testPopup_WAR_testPopupportlet

要查看此代码的运行情况,您可以从 this liferay forum 下载 2 个 portlet 并引用其中的说明。 .

希望这有助于更好地理解 liferay。

关于java - 用于在弹出窗口中打开另一个 portlet 的 PortletURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com