Liferay 使动态添加的portlet与调用portlet具有相同的scopeGroupId 问题
当通过另一个portlet(比如abc portlet)中的链接以弹出式显示portlet(比如测试portlet)时,测试portlet中显示的Liferay 使动态添加的portlet与调用portlet具有相同的scopeGroupId 问题,liferay,ipc,liferay-6,portlet,Liferay,Ipc,Liferay 6,Portlet,当通过另一个portlet(比如abc portlet)中的链接以弹出式显示portlet(比如测试portlet)时,测试portlet中显示的scopeGroupId始终是groupId,而不是为abc portlet配置的页面范围id或scopeGroupId 如果问题不清楚,更多细节如下 基本上我所做的就是本文中提到的。我将在下面简要介绍 我们所做的 创建了一个自定义portlet-测试portlet 已使该portlet的作用域为true 我们还添加了-,所以经过一番搜索,终于找到了l
scopeGroupId
始终是groupId,而不是为abc portlet配置的页面范围id或scopeGroupId
如果问题不清楚,更多细节如下
基本上我所做的就是本文中提到的。我将在下面简要介绍
我们所做的
,所以经过一番搜索,终于找到了liferay是如何做到这一点的。提示来自以下中的源代码:
Liferay在添加或编辑资源时,在相关资源中使用此功能添加博客、wiki、文档、文件夹等,因此检查JSP/html/portlet/asset\u browser/toolbar.JSP
,查看URL是如何生成的
Liferay的步骤与我想做的类似:
提供打开资产portlet(例如:Blog)的链接以添加条目
打开的弹出窗口具有与底层portlet相同的scopeGroupId(例如:文档和媒体)
有人会认为属性doAsGroupId
正好适合这种情况。是的,它是必需的,但仅仅它是不够的,令人惊讶的是,另一个必需的属性是plid
。默认情况下,plid
将是用户所在的当前页面/布局,URL将针对当前页面创建,但此默认值没有帮助
需要将plid
设置为控制面板的plid
下面是我们在abc portlet中编写的示例renderURL,用于在弹出窗口中打开测试portlet,请注意
想知道为什么liferay想到使用plid=”“
,而不仅仅是看起来很简单的doAsGroupId
注意:我还发现,如果我们使用plid=“
我们不需要在liferayportlet.xml中使用true
,如果需要动态添加资源,这是必不可少的
希望这对别人有帮助。如果还有其他更简单的方法,我会支持的。谢谢这很奇怪为什么doAsGroupId
不能单独工作,为什么它需要控制面板布局?可能是因为一个布局已经在一个特定的组中,它不能以不同的方式工作,这也可以说是控制面板,但我们都知道控制面板非常特殊;-)
if (!group.isControlPanel()) {
doAsGroupId = 0;
}
<%
long controlPanelPlid = PortalUtil.getControlPanelPlid(company.getCompanyId());
%>
<liferay-portlet:renderURL var="testPortletURL" portletName="test_WAR_testportlet" windowState="<%=LiferayWindowState.POP_UP.toString() %>"
doAsGroupId="<%=scopeGroupId %>" plid="<%=controlPanelPlid %>" refererPlid="<%=plid %>">
<liferay-portlet:param name="referringPortletResource" value="abc_WAR_abcportlet" />
</liferay-portlet:renderURL>
<%
String testPortletURLJavascript = "javascript:Liferay.Util.openWindow({dialog: {destroyOnHide: true}, id: 'test', title: 'Test Portlet View', uri: '" + HtmlUtil.escapeJS(testPortletURL) + "'});";
%>
<h4><a href="<%=testPortletURLJavascript%>">Click here to open test portlet in pop-up</a></h4>