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

时间:2013-05-06 21:46:24

标签: java jsp liferay portlet

假设我有布局实例(在Java或JSP中),我想得到它的URL。

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

但完全的网址呢?

我也可以获得scopeGroup友好的网址,

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?

1 个答案:

答案 0 :(得分:3)

试试这个:

PortalUtil.getLayoutFullURL(layout, themeDisplay)