转载

针对actionURL来说,主要为了和后台代码交互,即履行相对应的操纵,例如:删除操作,提交form表单等等。

 

<portlet:actionURL name="Firstlevel" var="URL">
  <portlet:param name="firstlevelId"     value="<%= String.valueOf(firstlevelId) %>" />
  <portlet:param name="redirect"         value="<%= redirect %>"/>
 </portlet:actionURL>

对应的后台代码是:

public void Firstlevel(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.Firstlevel(firstlevelId);    

             SessionMessages.add(request, "firstlevel-d");    

              sendRedirect(request, response);   

      }   else {         

            for (String error : errors) {

                   SessionErrors.add(request, error);         

    }   

  }  

}

 

在应用actionURL的时辰,为了和后台交互,必然要在<portlet:actionURL name="Firstlevel" var="URL">中的name名称和后台的办法名相对应,在此例子中,均为“Firstlevel”。

针对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/>。