Liferay 7.2使用实例渲染Portlet的URL

问题描述

我有Liferay 7.2。

用于自定义Portlet视图的Jsp文件

我正在尝试从自定义portlet生成一个URL,以链接文档媒体 portlet(com_liferay_document_library_web_portlet_DLPortlet)。

我尝试

<liferay-portlet:actionURL name="newMyNew"  portletName="com_liferay_document_library_web_portlet_DLPortlet" var="prueba2"></liferay-portlet:actionURL>

输出

http://localhost:8080/web/guest/home?p_p_id=com_liferay_document_library_web_portlet_DLPortlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&_com_liferay_document_library_web_portlet_DLPortlet_javax.portlet.action=newMyNew&p_auth=1IDKtzvU 

但是我需要 Document Media Portlet(com_liferay_document_library_web_portlet_DLPortlet)的实例ID,因为我需要它接收像folderId这样的变量

我需要以下输出

http://localhost:8080/web/guest/home/-/document_library/jFOlAlmeJgMl/view/34527?_com_liferay_document_library_web_portlet_DLPortlet_INSTANCE_jFOlAlmeJgMl_redirect=http%3A%2F%2Flocalhost%3A8080%2Fweb%2Fguest%2Fhome%3Fp_p_id%3Dcom_liferay_document_library_web_portlet_DLPortlet_INSTANCE_jFOlAlmeJgMl%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview

我该怎么做?

解决方法

我找到了获取portlet实例ID的解决方案

List<Portlet> portletListDUE = layoutTypePortlet.getAllPortlets();  
String portletInstanceId = "";
for(Portlet portletIn : portletListDUE) {
    
            String portletNameOfInstance = portletIn.getPortletName();
            if(portletNameOfInstance.equals("com_liferay_document_library_web_portlet_DLPortlet")) 
            {
                portletInstanceId = portletIn.getInstanceId();
            }
    }