我在弹出窗口中打开自定义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)我已从访客用户为控制面板的视图分配了权限。
如果有任何更改,请告诉我。
提前致谢
答案 0 :(得分:1)
本地服务调用永远不会生成权限异常(PrincipalException
),但会删除服务。
审核此URL将调用的代码,并查看是否有任何删除服务调用。它们很容易区分。例如,如果是User
服务,您通过UserLocalServiceUtil
调用将永远不会抛出PrincipalException
,但会调用UserServiceUtil
。检查您正在对*ServiceUtil
拨打的电话,并确保执行该操作的用户具有足够的访问权限。
答案 1 :(得分: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")});
});
});
}
如果它的正确不要忘记将其标记为答案
答案 2 :(得分:0)
只需在portal-ext.properties中添加以下代码并重新启动服务器
layout.show.portlet.access.denied=false