Liferay 和 <portlet:renderURL> 友好 URL

Liferay and <portlet:renderURL> to a friendly URL

我创建了一个带有友好 URL /balance-inquiries 的页面。 Liferay 管理员站点页面中给出的完整 URL 是 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>

我的问题是我应该使用什么参数值来使这个 link 工作?或者我应该求助于重定向,还是改用?

提前致谢。

您不会为页面创建呈现或操作 url,而是为 portlet。

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

如果您想重定向到具有不同 portlet 的页面,请创建 portlet configurable 并在 portlet 首选项中指定页面 url。通常,您不知道目标 portlet 将放置到哪个页面。它可以是单页或多页或任何内容。

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

传递参数

我已经弄清楚如何为跨越不同 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
  • 添加到您的页面,如 为 themeDisplay
  • 注入一个值

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