actionURL标签在Liferay中的作用是什么?

时间:2013-04-30 16:31:09

标签: java jsp tags liferay

以下代码在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标记怎么办?

1 个答案:

答案 0 :(得分:5)

这里有2件事情在发挥作用。

渲染JSP

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

创建renderURL时,可以使用mvcPath参数告诉MVCPortlet呈现特定的JSP。

用法如下:

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

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

发布表格数据

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

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

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

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

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

public void editPromotion(
        ActionRequest actionRequest, ActionResponse actionResponse)
    throws PortalException, SystemException {
}