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

Dim*_*ims 2 java tags jsp liferay

以下代码在Liferay portlet JSP中的作用是什么:

<portlet:actionURL var="editPromotionURL">
    <portlet:param name="mvcPath" value="/edit.jsp" />
</portlet:actionURL>
Run Code Online (Sandbox Code Playgroud)

根据com.liferay.taglib.portlet.ActionURLTag源代码,我推断出这个标签是根据LiferayPortletURL给定的参数创建的,并将它的文本表示放入var命名变量中.它是否正确?

我找不到mvcPath参数的使用位置.它的功能是什么?

如何使用此标记的结果<aui:form action="<%=editPromotionURL%>" method="post">?我认为JSP表达式不读pageContext.写不正确${editPromotionURL}吗?前者如何运作?

actionURL标签的任何其他功能是什么?

如果JSP中有两个portlet:actionURLportlet:renderURL标签怎么办?

rp.*_*rp. 5

这里有2件事情在玩.

渲染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>
Run Code Online (Sandbox Code Playgroud)

发布表格数据

您还可以使用它MVCPortlet来处理POSTed数据.

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

<form action="<%= editPromotionURL %>" method="post"></form>
Run Code Online (Sandbox Code Playgroud)

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

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

public void editPromotion(
        ActionRequest actionRequest, ActionResponse actionResponse)
    throws PortalException, SystemException {
}
Run Code Online (Sandbox Code Playgroud)