在Liferay中,actionURL和renderURL在开始使用的时候,总是不知道,该什么使用两个功能。下面介绍一下所理解的使用方法,可能有欠缺之处,见谅。
针对actionURL来说,主要是为了和后台代码交互,即执行相对应的操作,例如:删除操作,提交form表单等等。
<portlet:actionURL name="deleteFirstlevel" var="deleteURL">
<portlet:param name="firstlevelId" value="<%= String.valueOf(firstlevelId) %>" /> <portlet:param name="redirect" value="<%= redirect %>"/> </portlet:actionURL>对应的后台代码是:
public void deleteFirstlevel(ActionRequest request, ActionResponse response) throws Exception {
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
long groupId = themeDisplay.getScopeGroupId();
long firstlevelId = ParamUtil.getLong(request, "firstlevelId");
ArrayList<String> errors = new ArrayList<String>();
if (Validator.isNotNull(firstlevelId)) {
FirstlevelLocalServiceUtil.deleteFirstlevel(firstlevelId);
SessionMessages.add(request, "firstlevel-deleted");
sendRedirect(request, response);
} else {
for (String error : errors) {
SessionErrors.add(request, error);
}
}
}
在使用actionURL的时候,为了和后台交互,一定要在<portlet:actionURL name="deleteFirstlevel" var="deleteURL">中的name名称和后台的方法名相对应,在此例子中,均为“deleteFirstlevel”。
针对renderURL来说,个人目前所理解的程度是,为了页面之间的跳转或者刷新,跟actionURL最大的区别在于,其不与后台进行交互,只是页面相互之间的交互。
<portlet:renderURL var="addChildlevelURL">
<portlet:param name="mvcPath" value="/html/config/edit_childlevel.jsp" /> <portlet:param name="redirect" value="<%= redirect %>" /> </portlet:renderURL> <aui:button value="Add Category" onClick="<%= addChildlevelURL.toString() %>"/>在上面的代码中,通过Add Category 按钮,当点击的时候,页面会跳转到对应的增加(编辑)信息页面。
在使用<portlet:***>的时候,需要在前台代码中先声明<portlet:defineObjects/>。
以上只是目前所理解的程度,更详细的功能使用,后续再进行更新。另外大家可以参考Liferay官方的文档