弹出窗口中的liferay portlet问题

问题描述 投票:0回答:3

我在弹出窗口中打开自定义portlet时遇到问题。

下面是打开弹出窗口的代码。

LiferayPortletURL documentLibURL = PortletURLFactoryUtil.create(request, "portlet name with WAR name", themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);   
documentLibURL.setWindowState(LiferayWindowState.POP_UP);   
documentLibURL.setPortletMode(PortletMode.VIEW);

  AUI().use('aui-dialog', 'aui-io', 'event', 'event-custom', function(A) {
        var dialog = new A.Dialog({
                width: 800,
                height: 500,
                title: 'Popup Title',
                centered: true,
                draggable: true,
                modal: true
            }).plug(A.Plugin.IO, {uri: '<%= documentLibURL.toString() %>'}).render();

            dialog.show();

      });

当我的portlet没有对本地服务的任何调用时,portlet将在弹出窗口中呈现。但在添加一些复杂的代码之后。 Portlet正在给出权限错误。 “您没有访问此portlet所需的角色。”

1)我还在liferay-portlet.xml中添加了true。

2)我已从访客用户为控制面板的视图分配了权限。

如果有任何变更,请告诉我。

提前致谢

liferay
3个回答
1
投票

本地服务调用永远不会生成权限异常(PrincipalException),但删除服务将。

审核此URL将调用的代码,并查看是否有任何删除服务调用。它们很容易区分。例如,如果它是User服务你正在调用UserLocalServiceUtil将永远不会抛出PrincipalException但是调用UserServiceUtil会。检查您正在对*ServiceUtil进行的调用,并确保执行操作的用户具有足够的访问权限。


0
投票

你使用哪个版本的liferay。 该对话框在liferay 6.2中也不起作用,也可能在6.1中,请参考下面的代码。

 function popup(url){

 AUI().ready(function(A) {
    AUI().use('aui-base', function(A) {
        Liferay.Util.Window.getWindow(
            {
                title : "Popup Tile",
                uri: url,
                dialog: {
                    cache: false,
                    modal: true
                }
            }
        ).on('hide', function() {
              console.log("Modal closed")});

    });
});
}

如果它的正确不要忘记将其标记为答案


0
投票

只需在portal-ext.properties中添加以下代码并重新启动服务器即可

layout.show.portlet.access.denied=false
© www.soinside.com 2019 - 2024. All rights reserved.