我的门户网站中有一个对话框,可以打开一个portlet。当我单击链接并打开对话框时,对话框显示
您没有访问此portlet所需的角色。
但是,如果我在页面上添加相同的portlet,则在页面和对话框上打开portlet时没有任何障碍。我在这里错过了什么?有人知道吗?
我的代码是:
#set ($profile_url = $portletURLFactory.create($request, "profile_WAR_profileportlet", $getterUtil.getLong($plid), "RENDER_PHASE"))
$profile_url.setParameter("p_p_state", "exclusive")
<a href="#" id="profile" onclick="openDialog('$profile_url','preferences-dialog',500,500)"> Profile </a>
window,
'openDialog', //function name
function(url, popupID, wd, ht) { // parameters to the function
var A = AUI();
popupDialog = new A.Dialog({
id: popupID, // popupId passed so that it would be easy to close it through events other than the close button
centered: false, // all the different parameters function you can check in the Alloy API
draggable: true,
resizable: false,
width: wd,
stack: true,
modal: true,
height: ht,
scrollbars: true,
xy: [getWidth()/2-wd/2,10]
}
).plug(
A.Plugin.IO,
{
uri: url
}
);
popupDialog.render();
},
['aui-dialog','aui-dialog-iframe']
);
提前感谢任何人都可以提供的帮助。
答案 0 :(得分:5)
我认为您在liferay-portlet.xml
portlet的profile_WAR_profileportlet
中缺少以下配置:
<add-default-resource>true</add-default-resource>
对于在对话框弹出窗口中访问的portlet,应设置为true
,此处为此元素的documentation。
有关详细信息,请查看answer点4&amp; 5的答案对你有帮助。
答案 1 :(得分:0)
可能是你正在设置$ profile_url,但实际上是在$ preferences_url上打开对话框?我猜之前已经定义了preferences_url - 并且首选项(例如,portlet编辑模式)通常需要比常规呈现阶段更多的权限。通过以管理员身份访问此交叉检查..
答案 2 :(得分:0)
在portal-ext.properties文件中添加以下两行
portlet.add.default.resource.check.enabled=true
portlet.add.default.resource.check.whitelist=3,56_INSTANCE_0000,58,82,86,103,113,145,164,166,170,33,---here append the portlet id which you want to display