Liferay Portal(四)jsp中URL傳參給portlet

每一個portlet都有本身對應的view.jsp文件,jsp文件中能夠經過form表單的形式向對應的portlet傳遞參數,而後在portlet中處理這些請求。下面介紹兩種jsp的form請求:actionURL和renderURL。 html

一:actionURL 服務器

通常ActionURL適用於有確實的Action(行爲)的狀況下。好比說,表單form提交後Persistent狀態的改變、session的改變、perference的修改等等。 session

在jsp頁面中: jsp

<portlet:actionURL  var="actionURL" windowState="normal" portletMode="view">
<portlet:param name="action" value="doAction"/>
</portlet:actionURL> post

<form action="<%=actionURL%>" method="post">  
<input type="submit" value="doAction"/>  
</form>   編碼

當jsp文件發送ActionURL請求的時候,服務器自動調用對應portlet中的processAction()方法。在這個方法中使用actionRequest.getParameter("action")接收參數。代碼以下: spa

public void processAction(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, PortletException {
     String action = actionRequest.getParameter("action");                                  System.out.println(action);                                                         super.processAction(actionRequest, actionResponse);                                                               } orm

二:renderURL  htm

這個renderURL一般用來處理Portlet的導航。 字符串

在jsp頁面中:

<portlet:renderURL  var="renderURL" windowState = "normal" portletMode = "view">  
<portlet:param   name = "action"   value = "doView" />    
</portlet:renderURL>

<form action="<%=renderURL%>" method="post">  
<input type="submit" value="doView"/>  
</form>  

當jsp文件發送renderURL請求的時候,服務器先調用對應portlet中的processAction()方法,而後又調用doView()方法,當參數在processAction()方法中被接收的時候,還得再將參數設置到render請求中,才能將參數傳遞給doView()方法。代碼以下:

public void processAction(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, PortletException {
     String action = actionRequest.getParameter("action");
     actionResponse.setRenderParameter("action", action);                                 super.processAction(actionRequest, actionResponse);
}

public void doView(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException {
    renderResponse.setContentType("text/html");
    String action = renderRequest.getParameter("action");
    renderResponse.getWriter().println(action);                                                                                 super.doView(renderRequest, renderResponse);
}

以上就是jsp中兩種URL傳參到portlet的處理過程,注意表單提交最好使用Post方法而不是Get方法,由於某些Portlet服務器可能會將內部狀態編碼到URL的Query字符串中。

相關文章
相關標籤/搜索