【问题标题】:How to get Layout instance's URL in Liferay? What is friendly URL base?如何在 Liferay 中获取 Layout 实例的 URL?什么是友好的 URL 库?
【发布时间】:2013-04-30 17:51:04
【问题描述】:

假设我有 Layout 实例(在 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?

【问题讨论】:

    标签: java jsp liferay portlet


    【解决方案1】:

    试试这个:

    PortalUtil.getLayoutFullURL(layout, themeDisplay)
    

    【讨论】:

    • 顺便说一句,看看PortalUtil 服务:它有很多有趣的实用方法:-)
    • 是的,他们将所有内容放在不同的位置:...ServiceUtil 类中、变量中、JSP 自定义标签中、属性中、方法中以及PortalUtil 中。忘记在那里搜索了。
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 2012-12-24
    • 2019-01-30
    • 2016-01-13
    • 2016-05-09
    • 2015-01-06
    • 2020-02-02
    • 2017-02-15
    相关资源
    最近更新 更多