3

以下代码在 Liferay portlet JSP 中做了什么:

<portlet:actionURL var="editPromotionURL">
    <portlet:param name="mvcPath" value="/edit.jsp" />
</portlet:actionURL>

根据com.liferay.taglib.portlet.ActionURLTag源代码,我推断该标签LiferayPortletURL是从给定参数创建的,并将其文本表示形式放入var命名变量中。这个对吗?

我找不到mvcPath使用参数的位置。它的作用是什么?

此标签的结果如何与 一起使用<aui:form action="<%=editPromotionURL%>" method="post">?我以为 JSP 表达式不读取pageContext. 写的${editPromotionURL}不对吗?以前的工作如何?

actionURL 标签还有其他功能吗?

如果 JSP 中同时存在portlet:actionURLportlet:renderURL标签怎么办?

4

1 回答 1

6

这里有两件事在起作用。

渲染 JSP

首先,当您创建扩展\使用 Liferay 的 Portlet 类时,通常使用 mvcPath 参数com.liferay.util.bridges.mvc.MVCPortlet

当您创建一个 renderURL 时,您可以使用该mvcPath参数来告诉 MVCPortlet 呈现一个特定的 JSP。

用法如下:

<portlet:renderURL var="viewEditPromotionURL">
    <portlet:param name="mvcPath" value="/edit.jsp" />
</portlet:renderURL>

<a href="<%= viewEditPromotionURL %>">Edit Promo</a>

过帐表格数据

您还可以使用MVCPortlet来处理 POST 数据。

<portlet:actionURL name="editPromotion" var="editPromotionURL" />

<form action="<%= editPromotionURL %>" method="post"></form>

如您所见mvcPath,该参数不是必需的。相反,通过包含该name属性,您可以告诉 MVCPortlet 类查找以该属性命名的方法。在我们的例子中:editPromotion.

在您的 portlet 类中,只要您扩展MVCPortlet了 ,您需要做的就是实现此方法并使用actionRequest获取您可能需要的任何 POST 数据。

public void editPromotion(
        ActionRequest actionRequest, ActionResponse actionResponse)
    throws PortalException, SystemException {
}
于 2013-04-30T21:11:55.753 回答