2013-05-06 43 views
0

假设我有布局实例(使用Java或JSP),我想获取它的URL。如何在Liferay中获取布局实例的URL?什么是友好的URL基础?

布局代表一个页面。页面有“友好的URL”,我可以通过friendlyURL属性获取它。

但是FULL网址呢?

我还可以得到scopeGroup的友好的URL,其中

Group scopeGroup = themeDisplay.getScopeGroup(); 

,并获得更短的部分,这也是不完整的。

Company.getPortalURL 

也不包含所有其他文本(不包括端口和“/ web”部分)。

里面\ROOT\html\portlet\layouts_admin\layout\details.jsp我发现下面的代码来构建它

boolean privateLayout = ((Boolean)renderRequest.getAttribute("edit_pages.jsp-privateLayout")).booleanValue(); 
    Layout selLayout = (Layout)renderRequest.getAttribute("edit_pages.jsp-selLayout"); 

    StringBuilder friendlyURLBase = new StringBuilder(); 
    friendlyURLBase.append(themeDisplay.getPortalURL()); 


    LayoutSet layoutSet = selLayout.getLayoutSet(); 

    String virtualHostname = layoutSet.getVirtualHostname(); 

    if (Validator.isNull(virtualHostname) || (friendlyURLBase.indexOf(virtualHostname) == -1)) { 
     friendlyURLBase.append(scopeGroup.getPathFriendlyURL(privateLayout, themeDisplay)); 
     friendlyURLBase.append(scopeGroup.getFriendlyURL()); 
    } 

但是这个代码是基于陌生的参数edit_pages.jsp-privateLayoutedit_pages.jsp-selLayout这恐怕不会是正常的portlet访问。

那么,如何获取页面实例的完整URL呢?

回答

3

试试这个:

PortalUtil.getLayoutFullURL(layout, themeDisplay) 
+0

BTW,有一个看看'PortalUtil'服务:它有很多有趣的实用方法:-) – 2013-05-06 22:48:11

+0

是他们把不同地方的一切:在'... ServiceUtil'类,变量,JSP自定义标签,属性,方法和'PortalUtil'中。忘了在那里搜索。 – Dims 2013-05-07 12:46:51