如何在Liferay中获取布局实例的URL?什么是友好 URL 库?



假设我有Layout实例(Java或JSP),我想获得它的URL。

Layout表示一个页面。页面有"友好的URL",我可以通过friendlyURL属性获得它。

但是FULL url呢?

我也可以得到scopeGroup的友好url,其中

Group scopeGroup = themeDisplay.getScopeGroup();

,得到更短的部分,这也不完整。

Company.getPortalURL

也不包含所有其他文本(不包括port和"/web"部分)。

ROOThtmlportletlayouts_adminlayoutdetails.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 ?

试试这个:

PortalUtil.getLayoutFullURL(layout, themeDisplay)

最新更新