Liferay和<portlet:renderurl>到一个友好的URL

时间:2015-11-18 11:21:29

标签: href liferay-6 portlet

我创建了一个页面,其中包含友好的/ balance-queries网址。 Liferay管理员网站页面页面中提供的完整网址为http://localhost:8080/group/guest/balance-inquiries

从另一个页面创建一个renderUrl(或actionUrl)到这个页面被证明有点令人沮丧。以下是我试图使其发挥作用的众多变体之一。

<portlet:renderURL var="searchTransactionsUrl">
    <portlet:param name="mvcPath" value="/balance-inquiries" />
</portlet:renderURL>
<a href="<%=searchTransactionsUrl%>">Search LPC Transactions</a>

我的问题是我应该使用什么样的参数来使这个链接起作用?或者我应该使用重定向,还是使用?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我已经想出了如何为跨越不同WAR文件的portlet构建动态URL。代码如下:

<portlet:defineObjects />
<liferay-theme:defineObjects />

<%
    String portletId = "giftcardtransactionfilesummary_WAR_myportalgiftcardportlet";
    long otherPlid = PortalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), portletId);
%>

<liferay-portlet:renderURL var="giftcardTransactionFileSummaryUrl" plid="<%=otherPlid%>" portletName="<%=portletId%>">
    <liferay-portlet:param name="groupId" value="10157" />
    <liferay-portlet:param name="articleId" value="11385" />
</liferay-portlet:renderURL>

<a href="<%=giftcardTransactionFileSummaryUrl%>">view giftcard batch files</a>

技巧如下:

  • 了解Liferay生成的命名约定 portletIds
  • 添加&lt; liferay-theme:defineObjects /&gt;到你的页面,如 为themeDisplay注入一个值

除此之外,添加必要的@page和@taglib指令,一切都应该有效。

答案 1 :(得分:1)

您不会为网页创建渲染或操作网址,而是创建portlet。

如果要在同一页面上的portlet之间传递参数,请使用inter portlet communication

如果要重定向到具有不同portlet的页面,请创建portlet configurable并在portlet首选项中指定页面URL。通常,您不知道目标portlet所在的页面。它可以是单页或多页或任何其他内容。

如果要将参数传递给不同页面上的portlet,请使页面URL可配置,并通过友好URL传递参数。