每一個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字符串中。