以下代码在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:actionURL
和portlet:renderURL
标记怎么办?
答案 0 :(得分:5)
这里有2件事情在发挥作用。
首先,当您使用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 {
}