我正在使用Liferay portal 5.x. 我部署了一個簡單的portlet(使用jsp & servlet擴展GenericPortlet)。 此portlet將包含用戶名&密碼字段。我能夠在視圖模式下查看錶單。 但是當我提交表單時,動作來到Portlet類的processAction(),但用戶名爲&的密碼請求參數變爲null。未提交表單值的JSP Portlet
任何想法?
我正在使用Liferay portal 5.x. 我部署了一個簡單的portlet(使用jsp & servlet擴展GenericPortlet)。 此portlet將包含用戶名&密碼字段。我能夠在視圖模式下查看錶單。 但是當我提交表單時,動作來到Portlet類的processAction(),但用戶名爲&的密碼請求參數變爲null。未提交表單值的JSP Portlet
任何想法?
這是JSR 168或286 portlet嗎?
聽起來好像您確信實際上正在調用processAction()
方法。如果沒有,我會開始驗證。關鍵在於你的表單上的action屬性。您是否使用actionURL標記來呈現JSP上的action屬性?這就是說,無論我何時找到getParameter()
返回null的調用,這意味着我拼錯了參數,無論是在輸入元素的name屬性中,還是在參數getParameter()
中。另外,這些參數區分大小寫。
任何機會,您可以更新您的問題與表格和processAction()
方法的代碼?
下面是一個例子的portlet(JSR 286)拉動該請求的參數(包語句和進口忽略):
public class TestPortlet extends GenericPortlet {
public void init() throws PortletException {
super.init();
}
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
response.setContentType(request.getResponseContentType());
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/jsp/view.jsp");
rd.include(request,response);
}
public void processAction(ActionRequest request, ActionResponse response) throws PortletException {
System.err.println(request.getParameter("username"));
System.err.println(request.getParameter("password"));
}
}
下面是一個示例JSP:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<div>
<form action="<portlet:actionURL />">
<table>
<tr>
<td>
User Name:
</td>
<td>
<input type="text" name="username" value="">
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type="password" name="password" value="">
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</table>
</form>
</div>
我們應該添加爲名稱的前綴。
<input type="text" name="<portlet:namespace/>username">
我使用了上面的代碼,但它仍然不起作用,我正在使用JSR 168 – someone 2015-04-20 16:38:42
我在用什麼JSR 168? – someone 2015-04-20 16:39:01