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:actionURL和portlet:renderURL标签怎么办?
这里有2件事情在玩.
首先,当您使用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)